全志A133 android10 适配SLM770A 4G模块

一,模块基本信息

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

#串口驱动
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_SERIAL_QT2=y
#RNDIS驱动支持
CONFIG_MII=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_RNDIS_HOST=y

1.2 修改option驱动,添加模块支持
代码路径:longan/kernel/linux-4.9/drivers/usb/serial/option.c

diff --git a/longan/kernel/linux-4.9/drivers/usb/serial/option.c b/longan/kernel/linux-4.9/drivers/usb/serial/option.c
index 7ca999924d..965b6ed3ce 100644
--- a/longan/kernel/linux-4.9/drivers/usb/serial/option.c
+++ b/longan/kernel/linux-4.9/drivers/usb/serial/option.c
@@ -88,6 +88,18 @@ static void option_instat_callback(struct urb *urb);
#define HUAWEI_PRODUCT_E173S6                  0x1C07
#define HUAWEI_PRODUCT_E261                     0x1446
+//fy add for meig modem supported start.
+#define MEIG_VENDOR_ID                                 0x2DEE
+#define MEIG_PRODUCT_SRM815                    0x4D22
+#define MEIG_PRODUCT_SRM815_ECM                0x4D23
+#define MEIG_PRODUCT_SLM790                    0x4D20
+#define MEIG_PRODUCT_SLM770                    0x4D57
+#define MEIG_QCM_VENDOR_ID                     0x05C6
+#define MEIG_QCM_PRODUCT_SLM750_SRM815_SLM868  0xF601
+#define MEIG_PRODUCT_SRM811_RNDIS              0x4D51
+#define MEIG_PRODUCT_SRM811_NCM                0x4D52
+//fy add for meig modem supported end.
+
#define QUANTA_VENDOR_ID                       0x0408
#define QUANTA_PRODUCT_Q101                    0xEA02
#define QUANTA_PRODUCT_Q111                    0xEA03
@@ -593,6 +605,35 @@ static const struct option_blacklist_info yuga_clm920_ac5_blacklist = {
static const struct usb_device_id option_ids[] = {
+       //fy add for meig modem supported start.
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x03) }, //3g app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x13) }, //app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x01) }, //modem
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x12) }, //at
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x14) }, //gprs
+
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x03) }, //3g app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x13) }, //app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x01) }, //modem
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x12) }, //at
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x14) }, //gprs
+
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM815),
+       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7) },
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM815_ECM),
+       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_QCM_VENDOR_ID, MEIG_QCM_PRODUCT_SLM750_SRM815_SLM868),
+       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SLM790),
+       .driver_info = RSVD(0) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SLM770),
+       .driver_info = RSVD(0) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM811_RNDIS),
+       .driver_info = RSVD(0) | RSVD(1) },
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM811_NCM),
+       .driver_info = RSVD(0) | RSVD(1) },
+       //fy add for meig modem supported end.
+
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },

1.3 添加USB设备节点权限
代码路径:android/device/softwinner/ceres-common/ueventd.sun50iw10p1.rc
文件中添加以下配置内容:

/dev/ttyUSB*                0777    system      system

1.4 编译更新内核
驱动加载后,插入模块时。dev/目录会生成ttyUSB串口设备:

console:/ # ls -l dev/ttyUSB*
crwxrwxrwx 1 system system 188,   0 2025-02-20 13:20 dev/ttyUSB0
crwxrwxrwx 1 system system 188,   1 2025-02-20 13:20 dev/ttyUSB1
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

diff --git a/android/device/softwinner/ceres-b6/ceres_b6.mk b/android/device/softwinner/ceres-b6/ceres_b6.mk
index 321272978e..8e36d8cd74 100644
--- a/android/device/softwinner/ceres-b6/ceres_b6.mk
+++ b/android/device/softwinner/ceres-b6/ceres_b6.mk
@@ -159,9 +159,9 @@ PRODUCT_PACKAGES += \
#PRODUCT_PACKAGES += AllwinnerGmsIntegration
-############################### 3G Dongle Support ###############################
+############################### 4G Dongle Support ###############################
# Radio Packages and Configuration Flie
-$(call inherit-product-if-exists, vendor/aw/public/prebuild/lib/librild/radio_common.mk)
+$(call inherit-product-if-exists, vendor/meig/meig_radio.mk)

BUILD_WITH_GOOGLE_APPS := false
ifeq ($(strip $(BUILD_WITH_GOOGLE_APPS)), true)

2.3 添加HIDL配置
代码路径:android/device/softwinner/ceres-b6/configs/manifest.xml

diff --git a/android/device/softwinner/ceres-b6/configs/manifest.xml b/android/device/softwinner/ceres-b6/configs/manifest.xml
index fb82972d59..b9c7cb5178 100644
--- a/android/device/softwinner/ceres-b6/configs/manifest.xml
+++ b/android/device/softwinner/ceres-b6/configs/manifest.xml
@@ -25,6 +25,24 @@
             <name>IUsb</name>
             <instance>default</instance>
         </interface>
+    </hal>
+     <hal format="hidl">
+        <name>android.hardware.radio.deprecated</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOemHook</name>
+            <instance>slot1</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+        </interface>
     </hal>
     <hal format="hidl">
         <name>android.hardware.audio.effect</name>

二,调试

1.状态查看

console:/ # getprop | grep ril
[gsm.version.ril-impl]: [MEIG_RIL_Android7.x-later-V5.0.7.3]
[init.svc.vendor.meig-ril]: [running]
[init.svc.vendor.ril-daemon]: [stopped]
[ril.datachannel]: [/dev/ttyUSB1]
[rild.dongle_name]: [SLM770A]
[rild.libargs]: [-d /dev/ttyUSB2]
[rild.libpath]: [/vendor/lib/libmeig-ril.so]
[ro.boottime.vendor.meig-ril]: [5185500126]
[ro.radio.noawril]: [true]
[ro.radio.noril]: [false]
[sys.mgril.unrecverr]: [false]
[vendor.rild.libargs]: [-d /dev/ttyUSB2]
[vendor.rild.libpath]: [/vendor/lib/libmeig-ril.so]

2.usb串口驱动检查

adb root
adb shell
dmesg | grep option

打印以下信息:
在这里插入图片描述

3.查看节点

console:/ # cat sys/kernel/debug/usb/devices

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=2dee ProdID=4d57 Rev= 1.00
S:  Manufacturer=Marvell
S:  Product=Mobile Composite Device Bus
S:  SerialNumber=200806006809080000
C:* #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0e(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

<think>好的,我现在需要帮助用户解决全志A133芯片在Android 10系统上横屏显示的问题。首先,我需要回忆之前学过的相关知识,特别是关于全志平台屏幕配置的方法。 用户提到了几个引用,其中引用[1]是关于适配触摸屏的,引用[2]提到了修改sys_config.fex文件,引用[3]是关于屏幕旋转的build.prop配置。我需要把这些信息结合起来。 首先,横屏显示通常涉及显示方向和触摸校准两个方面。根据全志平台的常见配置方法,sys_config.fex文件中的屏幕参数设置是关键。用户提供的引用[2]提到了这个文件的路径,可能需要修改screen_width和screen_height的值,或者调整旋转参数如lcd_rotation。例如,将分辨率从1366x768改为768x1366可能适用于横屏,但需要确认硬件支持。 接下来,引用[3]中提到在build.prop中加入ro.sf.hwrotation属性,比如设置为90度旋转。这应该也是必要的一步,但需要确保系统服务支持这个属性,并且可能影响应用程序的布局。 另外,触摸屏的校准也很重要,引用[1]是关于触摸屏驱动的适配,可能需要检查触摸屏的坐标是否与旋转后的屏幕匹配。可能需要调整触摸驱动参数或使用工具校准。 可能的步骤是: 1. 修改sys_config.fex中的屏幕分辨率和旋转参数。 2. 更新build.prop中的旋转属性。 3. 校准触摸屏,确保触摸输入与显示方向一致。 还需要注意不同版本SDK路径的差异,用户需要根据实际路径调整。此外,可能需要重新编译系统镜像并刷机测试,这会有一定的风险,建议用户备份数据。 用户的问题可能涉及这些步骤中的遗漏或错误配置,需要逐一检查。例如,是否修改了正确的配置文件,参数是否正确,以及是否重新打包和烧录了固件。同时,不同硬件版本可能有不同的配置方式,需要参考具体的文档或社区经验。</think>针对全志A133 Android 10横屏显示问题,需通过系统参数调整和固件配置实现。以下是具体操作步骤: ### 一、屏幕方向基础配置 1. **修改sys_config.fex显示参数** - 路径:`/lichee/tools/pack/chips/sun8iw5p1/configs/vstar/sys_config.fex` - 关键参数调整: ```ini [lcd0_para] lcd_x = 768 # 原1366调整为物理横屏宽度 lcd_y = 1366 # 原768调整为物理竖屏高度 lcd_rotation = 0 # 可选0/90/180/270,需配合硬件排线方向[^2] ``` - 注意:若硬件排线已固定方向,需优先设置`lcd_rotation`参数 2. **Android层强制旋转** - 修改`system/build.prop`文件: ```properties ro.sf.hwrotation=90 # 可设置0/90/180/270度系统级旋转[^3] ``` ### 二、触摸屏校准(必选步骤) ```diff # 修改触摸驱动参数 [ctp_para] ctp_screen_max_x = 1366 # 保持与逻辑分辨率一致 ctp_screen_max_y = 768 # 实际显示方向改变时需交换数值 ctp_revert_x_flag = 1 # X轴镜像翻转 ctp_revert_y_flag = 1 # Y轴镜像翻转 ``` 需通过`getevent`工具验证触摸坐标与显示区域的映射关系[^1] ### 三、系统服务适配 1. 在`frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java`中检查方向锁定逻辑: ```java // 确保未设置强制竖屏标志 Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.USER_ROTATION_LOCKED, 0) == 0; ``` 2. SurfaceFlinger配置检查: ```shell adb shell dumpsys SurfaceFlinger | grep "Display orientation" ``` ### 四、固件更新流程 1. 修改后执行打包命令: ```bash cd /lichee && ./build.sh -p sun8iw5p1_android -b vstar pack ``` 2. 使用PhoenixSuit工具烧录新固件
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值