阅读:5178回复:5

972移植有方4G模块

楼主#
更多 发布于:2021-12-29 10:24
前面有兄弟在咨询移远4G的移植,之前写过一篇有方的4G模块移植记录,先粘贴上来



1. 有方4G模块基本信息
模块型号:N720V5 模块
功能:

端口映射关系

2. Bootloader配置
断电复位
//bl33/common/main.c
+       run_command("gpio clear 71",0); /////GPIOC-8 reset LTE module
+       run_command("gpio clear 74",0); /////GPIOC-11 reset WIFI module
3. Kernel 配置
PPP服务:
+CONFIG_PPTP=y
+CONFIG_PPP_SYNC_TTY=y
USB驱动:
+CONFIG_USB_NET_CDCETHER=y
+CONFIG_USB_SERIAL_WWAN=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_OPTION=y
禁用RNDIS
-CONFIG_USB_CONFIGFS_RNDIS=y
-CONFIG_USB_NET_RNDIS_HOST=y
编译bootimage,可查看存在/dev/ttyACM0~2端口,说明驱动加载成功
4. 手动拔号调试
串口或ADB输入以下AT指令可调试:
echo "AT+CSQ" > /dev/ttyACM1;cat /dev/ttyACM1
  echo "AT+CFUN=0,0" > /dev/ttyACM1;cat /dev/ttyACM1   ----模块进入待机
    echo "AT+CFUN=1,0" > /dev/ttyACM1   -----唤醒模块
echo -e "AT\$MYNETACT=0,1\r\n" > /dev/ttyACM1;cat /dev/ttyACM1
echo -e "AT$MYPOWEROFF\r\n" > /dev/ttyACM1

echo -e "AT+CGATT?\r\n" > /dev/ttyACM2;cat /dev/ttyACM2

echo -e "AT+CPIN?\r\n" > /dev/ttyACM2

最新喜欢:

thomas_2022thomas... zhaoyf13zhaoyf...
沙发#
发布于:2021-12-29 10:26

1. Init.rc启动RILD
Marconi.mk
core_amlogic.mk:使用宏控BUILD_WITH_MOBILE, 定义通用4G上网基本模块:
+ifeq ($(BUILD_WITH_MOBILE), true)
+$(warning Building mobile)
+$(call inherit-product, device/amlogic/common/mobile/mobile.mk)
+endif
基本模块如下:
device/amlogic/common/mobile/mobile.mk
###模块
PRODUCT_PACKAGES += \
rild \
libreference-ril \
chat \
ip-down \
ip-up \
TeleService
####相关的系统属性
PRODUCT_PROPERTY_OVERRIDES += ro.radio.noril=false
PRODUCT_PROPERTY_OVERRIDES += hw.nophone=false
PRODUCT_PROPERTY_OVERRIDES += \
   vendor.rild.libpath=/vendor/lib/libreference-ril.so

manifest_aosp.xml中申明Radio服务:
+       <!-- RIL -->
+       <hal format="hidl">
+               <name>android.hardware.radio</name>
+               <transport>hwbinder</transport>
+               <version>1.2</version>
+               <interface>
+                       <name>IRadio</name>
+                       <instance>slot1</instance>
+                       <!--instance>slot2</instance-->
+               </interface>
+               <interface>
+                       <name>ISap</name>
+                       <instance>slot1</instance>
+                       <!--instance>slot2</instance-->
+               </interface>
+       </hal>
+       <!-- RIL OEM HOOK -->
+       <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>

init.amlogic.board.rc中修改端口权限:
onboot
+       chmod 777 /dev/ttyACM2
+       chmod 777 /dev/ppp

marconi.mk 打开宏,并拷贝apns-conf.xml
+BUILD_WITH_MOBILE := true

+ifeq ($(BUILD_WITH_MOBILE),true)
+PRODUCT_COPY_FILES += \
+    device/amlogic/marconi/apns-conf.xml:$(PRODUCT_OUT)/system/etc/apns-conf.xml
+endif

amlogic/marconi/overlay/frameworks/base/core/res/res/values/config.xml
使用原生配置
    <!-- the 6th element indicates boot-time dependency-met value. -->
+       <!--
    <string-array translatable="false" name="networkAttributes">
        <item>"wifi,1,1,1,-1,true"</item>
        <item>"mobile,0,0,0,-1,true"</item>
@@ -26,6 +27,7 @@
        <item>"pppoe,18,18,1,-1,true"</item>

    </string-array>
+        -->

Rild 权限:
ril/rild/rild.rc
@@ -1,5 +1,5 @@
service vendor.ril-daemon /vendor/bin/hw/rild
    class main
-    user radio
+    user root
    group radio cache inet misc audio log readproc wakelock
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

System/sepolicy/vendor/rild.te
init_daemon_domain(rild)
+# add for chat
+allow rild system_file:file { execute execute_no_trans getattr open read};
Libreference-ril.so移植:使用Neowaylib
Neowaylib, chat.c, ip-up.c, ip-down.c放入hardware/ril/reference-ril/目录,修改makefile:
ril/reference-ril/Android.mk
@@ -5,6 +5,21 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

+LOCAL_MODULE := libreference-ril
+
###使用宏区分Neowayso
+ifeq ($(BUILD_WITH_MOBILE),true)
+#Use Neoway reference-ril
+LOCAL_SRC_FILES_arm := lib/32/libreference-ril.so
+LOCAL_SRC_FILES_arm64 := lib/64/libreference-ril.so
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := .so
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_PROPRIETARY_MODULE := true
+LOCAL_MODULE_TARGET_ARCH:= arm arm64
+LOCAL_MULTILIB := both
+include $(BUILD_PREBUILT)
+else
+#Use default reference-ril
LOCAL_SRC_FILES:= \
    reference-ril.c \
    atchannel.c \
@@ -50,3 +65,37 @@ else
  LOCAL_MODULE:= reference-ril
  include $(BUILD_EXECUTABLE)
endif
+endif
+
###编译chat
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= chat.c
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-sign-compare -Wno-error -Wno-unused-const-variable
+LOCAL_CFLAGS += -pie -fPIE
+LOCAL_LDFLAGS += -pie -fPIE
+LOCAL_SHARED_LIBRARIES += libcutils libutils
+LOCAL_MODULE_TAGS:=eng optional
+LOCAL_MODULE:= chat
+include $(BUILD_EXECUTABLE)
+
###编译ip-up
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= ip-up.c
+LOCAL_SHARED_LIBRARIES += libcutils libutils
+LOCAL_CFLAGS += -Wno-error -Wno-self-assign
+LOCAL_CFLAGS += -pie -fPIE
+LOCAL_LDFLAGS += -pie -fPIE
+LOCAL_MODULE_TAGS:=eng optional
+LOCAL_MODULE_PATH:= $(TARGET_OUT_ETC)/ppp
+LOCAL_MODULE:= ip-up
+include $(BUILD_EXECUTABLE)
+
###编译ip-down
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= ip-down.c
+LOCAL_SHARED_LIBRARIES += libcutils libutils
+
+LOCAL_CFLAGS += -Wno-error -Wno-self-assign
+LOCAL_CFLAGS += -pie -fPIE
+LOCAL_LDFLAGS += -pie -fPIE
+LOCAL_MODULE_TAGS:=eng optional
+LOCAL_MODULE_PATH:= $(TARGET_OUT_ETC)/ppp
+LOCAL_MODULE:= ip-down
+include $(BUILD_EXECUTABLE)

2. Framework修改:
默认全网通
base/telephony/java/com/android/internal/telephony/RILConstants.java
    int PREFERRED_NETWORK_MODE = Integer.parseInt(TelephonyManager.getTelephonyProperty(0,"ro.telephony.default_network", Integer.toString(NETWORK_MODE_WCDMA_PREF)));
+            "ro.telephony.default_network", Integer.toString(NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA)));

常见问题:
1. Log: logcat -b radio > d:\filesradio日志导入d盘下files文件
2. 关键字:PPPD 查看是否拔号成功
SETUP_DATA_CALL 移动数据联网
setInitialApn APN
Main Log中的ConnnectivityService也可参考
3. 如果RILJ日志显示未初始化成功,查看Radiomanifest是否配置正确,RILD权限是否打开,RILD是否成功启动,Rilreference-ril.so是否与模块匹配
4. 4G 信号,但PPPD未拔号,查看
Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED数据库是否打开
5. 4G信号图标并拔号成功,但无法联网,logcat显示network unrechable,网关设置不成功:
+++ b/base/services/core/java/com/android/server/ConnectivityService.java
@@ -4828,6 +4828,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
            }
        }
        for (RouteInfo route : routeDiff.added) {
+
+                       try {
+                               if (route.getInterface().equals("ppp0")) {
+                               RouteInfo xroute = RouteInfo.makeHostRoute(route.getGateway(), route.getInterface()); // make host route for nexthop
+                               mNetd.addRoute(netId, xroute); //add nexthop(getGateway()) for table ppp0
+                               if (DBG) log("xx Adding Route [" + xroute + "] to network " + netId);
+                               }
+            } catch (RemoteException e) {
+                               loge("xx RemoteException in addRoute for gateway: " + e);
+            }
+

6. 关键节点:libreference-ril.sorildAPN,网关
conlan
论坛版主
论坛版主
板凳#
发布于:2021-12-30 15:20
我暂时移植移远的能够显示移动网络信号,但是没有网络。
地板#
发布于:2021-12-30 16:55
conlan:我暂时移植移远的能够显示移动网络信号,但是没有网络。回到原帖
更新一下APN文件
conlan
论坛版主
论坛版主
4楼#
发布于:2021-12-30 18:23
陆沉子:更新一下APN文件回到原帖
嗯,我问了移远的,让我手动添加APN就可以了,现在可以上网了,谢谢大神!
5楼#
发布于:2022-01-28 15:43
conlan:嗯,我问了移远的,让我手动添加APN就可以了,现在可以上网了,谢谢大神!回到原帖
大神好, 用的这个移远4G模块是什么型号呢,这边也想调试下4G这部分功能
游客

返回顶部