全志A133 android10 适配SLM770A 4G模块

打印 上一主题 下一主题

主题 1932|帖子 1932|积分 5796

一,模块基本信息

1.官方介绍

SLM770A是美格智能最新推出的一款LTE Cat.4无线通讯模组,最大支持下行速率150Mbps及上行速率50Mbps。同时向下兼容现有的3G和2G网络,以确保即使在偏远地区也可以举行网络通信。
SLM770A模组支持分集接收和MIMO技术,优化数据传输的速度并进步通讯质量。支持NCM/PPP/ECM/TCP/UDP/DTSL/HTTP(S)/FTP/MQTT等多种拨号方式及内置网络协议。集成了UART/I2C/PCM/SPI/SDIO等丰富的硬件接口。广泛应用于工业路由、安防监控、CPE、车载DVR、共享等领域。
2.子端口分析

捏造出来的各个子端口主要用来实现AT命令收发,网络通信,GPS,诊断等功能。


二,驱动移植与RIL适配

1.添加usb串口驱动

1.1 内核配置打开相应宏
代码路径:longan/kernel/linux-4.9/arch/arm64/configs/sun50iw10p1smp_a100_android_defconfig
  1. #串口驱动
  2. CONFIG_USB_SERIAL_GENERIC=y
  3. CONFIG_USB_SERIAL_OPTION=y
  4. CONFIG_USB_SERIAL_QT2=y
  5. #RNDIS驱动支持
  6. CONFIG_MII=y
  7. CONFIG_USB_USBNET=y
  8. CONFIG_USB_NET_CDCETHER=y
  9. CONFIG_USB_NET_RNDIS_HOST=y
复制代码
1.2 修改option驱动,添加模块支持
代码路径:longan/kernel/linux-4.9/drivers/usb/serial/option.c
  1. diff --git a/longan/kernel/linux-4.9/drivers/usb/serial/option.c b/longan/kernel/linux-4.9/drivers/usb/serial/option.c
  2. index 7ca999924d..965b6ed3ce 100644
  3. --- a/longan/kernel/linux-4.9/drivers/usb/serial/option.c
  4. +++ b/longan/kernel/linux-4.9/drivers/usb/serial/option.c
  5. @@ -88,6 +88,18 @@ static void option_instat_callback(struct urb *urb);
  6. #define HUAWEI_PRODUCT_E173S6                  0x1C07
  7. #define HUAWEI_PRODUCT_E261                     0x1446
  8. +//fy add for meig modem supported start.
  9. +#define MEIG_VENDOR_ID                                 0x2DEE
  10. +#define MEIG_PRODUCT_SRM815                    0x4D22
  11. +#define MEIG_PRODUCT_SRM815_ECM                0x4D23
  12. +#define MEIG_PRODUCT_SLM790                    0x4D20
  13. +#define MEIG_PRODUCT_SLM770                    0x4D57
  14. +#define MEIG_QCM_VENDOR_ID                     0x05C6
  15. +#define MEIG_QCM_PRODUCT_SLM750_SRM815_SLM868  0xF601
  16. +#define MEIG_PRODUCT_SRM811_RNDIS              0x4D51
  17. +#define MEIG_PRODUCT_SRM811_NCM                0x4D52
  18. +//fy add for meig modem supported end.
  19. +
  20. #define QUANTA_VENDOR_ID                       0x0408
  21. #define QUANTA_PRODUCT_Q101                    0xEA02
  22. #define QUANTA_PRODUCT_Q111                    0xEA03
  23. @@ -593,6 +605,35 @@ static const struct option_blacklist_info yuga_clm920_ac5_blacklist = {
  24. static const struct usb_device_id option_ids[] = {
  25. +       //fy add for meig modem supported start.
  26. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x03) }, //3g app
  27. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x13) }, //app
  28. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x01) }, //modem
  29. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x12) }, //at
  30. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x14) }, //gprs
  31. +
  32. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x03) }, //3g app
  33. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x13) }, //app
  34. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x01) }, //modem
  35. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x12) }, //at
  36. +       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x14) }, //gprs
  37. +
  38. +       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM815),
  39. +       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7) },
  40. +       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM815_ECM),
  41. +       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7)},
  42. +       { USB_DEVICE(MEIG_QCM_VENDOR_ID, MEIG_QCM_PRODUCT_SLM750_SRM815_SLM868),
  43. +       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7)},
  44. +       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SLM790),
  45. +       .driver_info = RSVD(0) | RSVD(5) | RSVD(6) | RSVD(7)},
  46. +       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SLM770),
  47. +       .driver_info = RSVD(0) | RSVD(5) | RSVD(6) | RSVD(7)},
  48. +       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM811_RNDIS),
  49. +       .driver_info = RSVD(0) | RSVD(1) },
  50. +       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM811_NCM),
  51. +       .driver_info = RSVD(0) | RSVD(1) },
  52. +       //fy add for meig modem supported end.
  53. +
  54.         { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
  55.         { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
  56.         { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
复制代码
1.3 添加USB装备节点权限
代码路径:android/device/softwinner/ceres-common/ueventd.sun50iw10p1.rc
文件中添加以下配置内容:
  1. /dev/ttyUSB*                0777    system      system
复制代码
1.4 编译更新内核
驱动加载后,插入模块时。dev/目录会生成ttyUSB串口装备:
  1. console:/ # ls -l dev/ttyUSB*
  2. crwxrwxrwx 1 system system 188,   0 2025-02-20 13:20 dev/ttyUSB0
  3. crwxrwxrwx 1 system system 188,   1 2025-02-20 13:20 dev/ttyUSB1
  4. crwxrwxrwx 1 system system 188,   2 2025-02-20 14:45 dev/ttyUSB2
复制代码
2.添加RIL配置

2.1 驱动包解压
将Meig_Android_Driver_V5.0.7.3.zip解压到Android源码根目录vendor/meig 目录:

SLM770A 4G模块资料下载链接:https://download.csdn.net/download/weixin_45639314/90408097
2.2 在mk文件中添加美格ril配置
代码路径:android/device/softwinner/ceres-b6/ceres_b6.mk
  1. diff --git a/android/device/softwinner/ceres-b6/ceres_b6.mk b/android/device/softwinner/ceres-b6/ceres_b6.mk
  2. index 321272978e..8e36d8cd74 100644
  3. --- a/android/device/softwinner/ceres-b6/ceres_b6.mk
  4. +++ b/android/device/softwinner/ceres-b6/ceres_b6.mk
  5. @@ -159,9 +159,9 @@ PRODUCT_PACKAGES += \
  6. #PRODUCT_PACKAGES += AllwinnerGmsIntegration
  7. -############################### 3G Dongle Support ###############################
  8. +############################### 4G Dongle Support ###############################
  9. # Radio Packages and Configuration Flie
  10. -$(call inherit-product-if-exists, vendor/aw/public/prebuild/lib/librild/radio_common.mk)
  11. +$(call inherit-product-if-exists, vendor/meig/meig_radio.mk)
  12. BUILD_WITH_GOOGLE_APPS := false
  13. ifeq ($(strip $(BUILD_WITH_GOOGLE_APPS)), true)
复制代码
2.3 添加HIDL配置
代码路径:android/device/softwinner/ceres-b6/configs/manifest.xml
  1. diff --git a/android/device/softwinner/ceres-b6/configs/manifest.xml b/android/device/softwinner/ceres-b6/configs/manifest.xml
  2. index fb82972d59..b9c7cb5178 100644
  3. --- a/android/device/softwinner/ceres-b6/configs/manifest.xml
  4. +++ b/android/device/softwinner/ceres-b6/configs/manifest.xml
  5. @@ -25,6 +25,24 @@
  6.              <name>IUsb</name>
  7.              <instance>default</instance>
  8.          </interface>
  9. +    </hal>
  10. +     <hal format="hidl">
  11. +        <name>android.hardware.radio.deprecated</name>
  12. +        <transport>hwbinder</transport>
  13. +        <version>1.0</version>
  14. +        <interface>
  15. +            <name>IOemHook</name>
  16. +            <instance>slot1</instance>
  17. +        </interface>
  18. +    </hal>
  19. +    <hal format="hidl">
  20. +        <name>android.hardware.radio</name>
  21. +        <transport>hwbinder</transport>
  22. +        <version>1.0</version>
  23. +        <interface>
  24. +            <name>IRadio</name>
  25. +            <instance>slot1</instance>
  26. +        </interface>
  27.      </hal>
  28.      <hal format="hidl">
  29.          <name>android.hardware.audio.effect</name>
复制代码

二,调试

1.状态查察

  1. console:/ # getprop | grep ril
  2. [gsm.version.ril-impl]: [MEIG_RIL_Android7.x-later-V5.0.7.3]
  3. [init.svc.vendor.meig-ril]: [running]
  4. [init.svc.vendor.ril-daemon]: [stopped]
  5. [ril.datachannel]: [/dev/ttyUSB1]
  6. [rild.dongle_name]: [SLM770A]
  7. [rild.libargs]: [-d /dev/ttyUSB2]
  8. [rild.libpath]: [/vendor/lib/libmeig-ril.so]
  9. [ro.boottime.vendor.meig-ril]: [5185500126]
  10. [ro.radio.noawril]: [true]
  11. [ro.radio.noril]: [false]
  12. [sys.mgril.unrecverr]: [false]
  13. [vendor.rild.libargs]: [-d /dev/ttyUSB2]
  14. [vendor.rild.libpath]: [/vendor/lib/libmeig-ril.so]
复制代码
2.usb串口驱动查抄

  1. adb root
  2. adb shell
  3. dmesg | grep option
复制代码
打印以下信息:

3.查察节点

  1. console:/ # cat sys/kernel/debug/usb/devices
  2. T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
  3. D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
  4. P:  Vendor=2dee ProdID=4d57 Rev= 1.00
  5. S:  Manufacturer=Marvell
  6. S:  Product=Mobile Composite Device Bus
  7. S:  SerialNumber=200806006809080000
  8. C:* #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=500mA
  9. A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
  10. I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
  11. E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
  12. I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
  13. E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  14. E:  Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  15. I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
  16. E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  17. E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  18. I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
  19. E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
  20. E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  21. E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  22. I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
  23. E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
  24. E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  25. E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  26. I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
  27. E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  28. E:  Ad=0e(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表