阅读:5260回复:5
972移植有方4G模块
前面有兄弟在咨询移远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 |
|
沙发#
发布于: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移植:使用Neoway的lib 将Neoway的lib, 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 + ###使用宏区分Neoway的so +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:\files将radio日志导入d盘下files文件 2. 关键字:PPPD 查看是否拔号成功 SETUP_DATA_CALL 移动数据联网 setInitialApn APN Main Log中的ConnnectivityService也可参考 3. 如果RILJ日志显示未初始化成功,查看Radio的manifest是否配置正确,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.so,rild,APN,网关 |
|
4楼#
发布于:2021-12-30 18:23
|
|
5楼#
发布于:2022-01-28 15:43
|
|