全志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/devicesT:  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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71529.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序:多菜單欄設計效果

一、實現效果 二、代碼 wxml 編輯前端界面,步驟 菜單邏輯: 逐步取出數組中的項,首先取出頂部菜單項,然后選中后取出選中的底部數據(左側菜單+右側內容),然后點擊左側菜單取出選中的左側菜單對應的右側內容 ①這里我的數據是全部封裝到一個數組對象的,首先我的循環…

C++基礎知識學習記錄—string類

string實際上是C內置的一個類&#xff0c;內部對char *進行了封裝&#xff0c;不用擔心數組越界問題&#xff0c;string類中&#xff0c;除了上課講解的函數外&#xff0c;還有很多函數可以使用&#xff0c;可以自行查閱文檔。 構造函數原型&#xff1a; string(); //創建一個…

Ollama+DeepSeek+Open-WebUi

環境準備 Docker Ollama Open-WebUi Ollama 下載地址&#xff1a;Ollama docker安裝ollama docker run -d \ -v /data/ollama/data:/root/.ollama \ -p 11434:11434 \ --name ollama ollama/ollama 下載模型 Ollama模型倉庫 # 示例&#xff1a;安裝deepseek-r1:7b doc…

設計模式--訪問者模式【行為型模式】

設計模式的分類 我們都知道有 23 種設計模式&#xff0c;這 23 種設計模式可分為如下三類&#xff1a; 創建型模式&#xff08;5 種&#xff09;&#xff1a;單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。結構型模式&#xff08;7 種&#xff09;&#xff1…

前端循環全解析:JS/ES/TS 循環寫法與實戰示例

循環是編程中控制流程的核心工具。本文將詳細介紹 JavaScript、ES6 及 TypeScript 中各種循環的寫法、特性&#xff0c;并通過實際示例幫助你掌握它們的正確使用姿勢。 目錄 傳統三劍客 for 循環 while 循環 do...while 循環 ES6 新特性 forEach for...of for...in 數組…

數據中心儲能蓄電池狀態監測管理系統 組成架構介紹

安科瑞劉鴻鵬 摘要 隨著數據中心對供電可靠性要求的提高&#xff0c;蓄電池儲能系統成為關鍵的后備電源。本文探討了蓄電池監測系統在數據中心儲能系統中的重要性&#xff0c;分析了ABAT系列蓄電池在線監測系統的功能、技術特點及其應用優勢。通過蓄電池監測系統的實施&#…

Mac端homebrew安裝配置

拷打了一下午o3-mini-high&#xff0c;不如這位博主的超強帖子&#xff0c;10分鐘結束戰斗 跟隨該文章即可&#xff0c;2025/2/19親測可行 mac 安裝HomeBrew(100%成功)_mac安裝homebrew-CSDN博客文章瀏覽閱讀10w次&#xff0c;點贊258次&#xff0c;收藏837次。一直覺得自己寫…

機器學習實戰(8):降維技術——主成分分析(PCA)

第8集&#xff1a;降維技術——主成分分析&#xff08;PCA&#xff09; 在機器學習中&#xff0c;降維&#xff08;Dimensionality Reduction&#xff09; 是一種重要的數據處理技術&#xff0c;用于減少特征維度、去除噪聲并提高模型效率。主成分分析&#xff08;Principal C…

windows環境下用docker搭建php開發環境dnmp

安裝WSL WSL即Linux子系統&#xff0c;比虛擬機占用資源少&#xff0c;安裝的前提是系統必須是win10以上。 WSL的安裝比較簡單&#xff0c;網上有很多教程&#xff0c;例如&#xff1a;WSL簡介與安裝流程&#xff08;Windows 下的 Linux 子系統&#xff09;_wsl安裝-CSDN博客&…

Python網絡爬蟲技術詳解文檔

Python網絡爬蟲技術詳解文檔 目錄 網絡爬蟲概述爬蟲核心技術解析常用Python爬蟲庫實戰案例演示反爬蟲機制與應對策略爬蟲法律與道德規范高級爬蟲技術資源推薦與學習路徑1. 網絡爬蟲概述 1.1 什么是網絡爬蟲 網絡爬蟲(Web Crawler)是一種按特定規則自動抓取互聯網信息的程序…

位運算,雙指針,二分,排序算法

文章目錄 位運算二進制中1的個數題解代碼我們需要0題解代碼 排序模版排序1題解代碼模版排序2題解代碼模版排序3題解代碼 雙指針最長連續不重復子序列題解代碼 二分查找題解代碼 位運算 1. bitset< 16 >將十進制數轉為16位的二進制數 int x 25; cout << bitset<…

一周學會Flask3 Python Web開發-redirect重定向

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 前面我們學過渲染到模板頁面&#xff0c;這個其實是一種內部的轉發&#xff0c;瀏覽器地址欄地址沒有變化。如果我們想重定向…

圖片粘貼上傳實現

圖片上傳 html demo 直接粘貼本地運行查看效果即可&#xff0c;有看不懂的直接喂給 deepseek 會解釋的很清晰 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"…

RedisTemplate存儲含有特殊字符解決

ERROR信息: 案發時間: 2025-02-18 01:01 案發現場: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分鐘過期作案動機: stringRedisTemplate繼承了Redistemplate 使用的…

Python正則表達式學習

Python正則表達式全攻略 一、正則表達式基礎 1. 什么是正則表達式&#xff1f; 用于描述字符串匹配規則的表達式廣泛應用于文本處理、表單驗證、數據清洗等領域 2. Python中的re模塊 import re3. 基礎語法 字符說明示例.匹配任意字符(除換行)a.c → abc\d數字 [0-9]\d\d …

20250218 隨筆 垂直分庫分表(Vertical Sharding) 和 水平分庫分表(Horizontal Sharding)

垂直分庫分表&#xff08;Vertical Sharding&#xff09; 和 水平分庫分表&#xff08;Horizontal Sharding&#xff09; 是數據庫拆分的兩種策略。它們在大規模數據庫優化、分布式架構設計中至關重要&#xff0c;主要用于 降低單庫壓力、提高查詢效率、支持高并發。 1. 垂直分…

notepad++右鍵菜單不見了

卸載時沒點擊完成&#xff0c;又重新安裝了一個&#xff0c;最終導致了一些bug&#xff0c;導致右鍵沒有notepad菜單。 解決方式&#xff1a; 新建一個register.reg文件&#xff0c;加入以下代碼&#xff0c;然后雙擊執行即可 代碼說明&#xff1a;Open with Notepad 是右…

重定向與文件緩沖機制

目錄 一、重定向的原理與實踐 1. 輸出重定向&#xff1a;讓數據流向新目的地 2. 追加重定向&#xff1a;在文件末尾追加數據 3. 輸入重定向&#xff1a;從指定文件讀取數據 4. 標準輸出流與標準錯誤流的區別 5. 使用 dup2 實現重定向 二、FILE 結構體的奧秘 1. FILE 中的…

DeepSeek 沖擊(含本地化部署實踐)

DeepSeek無疑是春節檔最火爆的話題&#xff0c;上線不足一月&#xff0c;其全球累計下載量已達4000萬&#xff0c;反超ChatGPT成為全球增長最快的AI應用&#xff0c;并且完全開源。那么究竟DeepSeek有什么魔力&#xff0c;能夠讓大家趨之若鶩&#xff0c;他又將怎樣改變世界AI格…

顯微鏡下的人體結構

顯微鏡下的人體結構&#xff0c;看完以后&#xff0c;你還覺得人類是進化而來的嗎&#xff1f;...... 第一張&#xff1a;電子顯微鏡所觀察到的人類血管&#xff0c;可以非常清楚的看到里面的白細胞和紅細胞 第二張&#xff1a;正在分泌耳垢&#xff08;耳屎&#xff09;的耳道…