まずサプライヤーから提供されている so ライブラリを取得し、vendor\rockchip\common\phone\lib の下に so を置きます。
対応するphone.mkを変更し、soライブラリを指定された場所に移動します(Android 7以下ではsystem/libに移動し、Android 8以降ではvendor/libに移動します)。
CUR_PATH := vendor/rockchip/common
#########################################################
# 3G Dongle SUPPORT
#########################################################
PRODUCT_COPY_FILES += \
$(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \
$(CUR_PATH)/phone/etc/ppp/ip-up:system/etc/ppp/ip-up \
$(CUR_PATH)/phone/etc/ppp/ip-up:system/etc/ppp/ip-up-vpn \
$(CUR_PATH)/phone/etc/ppp/call-pppd:system/etc/ppp/call-pppd \
$(CUR_PATH)/phone/etc/operator_table:system/etc/operator_table \
$(CUR_PATH)/phone/lib/libreference-ril-n58.so:system/lib/libreference-ril-n58.so \
$(CUR_PATH)/phone/lib/libreference-ril.so:vendor/lib/libreference-ril.so
device/rockchip/common/BoardConfig.mk を変更します。
#enable 3g dongle
BOARD_HAVE_DONGLE ?= true
device/rockchip/common/init.connectivity.rc を変更して ppp を追加します。そうしないとネットワークが使用されなくなります。
chmod 0777 /dev/ppp
device/rockchip/rk3288/init.rk3288.rc を変更します。
service ril-daemon /vendor/bin/hw/rild -l /vendor/lib/libreference-ril.so
class main
user root
group radio cache inet misc audio sdcard_rw log
capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
device/rockchip/rk3288/manifest.xml を変更します。
<hal format="hidl">
<name>android.hardware.radio</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IRadio</name>
<instance>slot1</instance>
</interface>
<interface>
<name>ISap</name>
<instance>slot1</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>
device/rockchip/common/ueventd.rockchip.rc を変更します。
# for radio
/dev/ttyUSB0 0660 radio radio
/dev/ttyUSB1 0660 radio radio
/dev/ttyUSB2 0660 radio radio
/dev/ttyUSB3 0660 radio radio
/dev/ttyUSB4 0660 radio radio
/dev/ttyUSB5 0660 radio radio
/dev/ttyUSB6 0660 radio radio
/dev/ttyUSB7 0660 radio radio
/dev/ttyUSB8 0660 radio radio
/dev/ttyUSB9 0660 radio radio
/dev/ttyUSB* 0660 radio radio
/dev/ttyACM* 0660 radio radio
/dev/cdc-wdm* 0660 radio radio
/dev/qcqmi* 0660 radio radio
/dev/cdc-acm* 0660 radio radio
#PCIe
/dev/mhi_DUN 0660 radio radio
/dev/mhi_DIAG 0660 radio radio
/dev/mhi_BHI 0660 radio radio
/dev/mhi_LOOPBACK 0660 radio radio
/dev/mhi_QMI0 0660 radio radio
device/rockchip/common/sepolicy/file_contexts を変更します
/dev/ttyFIQ[0-9]* u:object_r:serial_device:s0
/dev/ttyUSB[0-9]* u:object_r:radio_device:s0
/dev/ttyCOM[0-9]* u:object_r:tty_device:s0
/dev/ttyACM[0-9]* u:object_r:tty_device:s0
/dev/cdc-wdm[0-9]* u:object_r:radio_device:s0
/dev/qcqmi[0-9]* u:object_r:radio_device:s0
/vendor/bin/hw/rild u:object_r:rild_exec:s0
/dev/socket/rildOemHook u:object_r:rild_exec:s0
#PCIe
/dev/mhi_DUN u:object_r:radio_device:s0
/dev/mhi_DIAG u:object_r:radio_device:s0
/dev/mhi_BHI u:object_r:radio_device:s0
/dev/mhi_LOOPBACK u:object_r:radio_device:s0
/dev/mhi_QMI0 u:object_r:radio_device:s0
device/rockchip/common/sepolicy/rild.te を変更します。
allow rild self:packet_socket { create bind write read };
adb logcat -b radio -v time を通じて無線ログをキャプチャします。
修正device/rockchip/rk3288/overlay/frameworks/base/core/res/res/values/config.xml
モバイルを変更する
<string-array translatable="false" name="networkAttributes">
<item>"wifi,1,1,2,-1,true"</item>
<item>"mobile,0,0,0,-1,true"</item>
<item>"mobile_mms,2,0,4,60000,true"</item>
<item>"mobile_supl,3,0,2,60000,true"</item>
<item>"mobile_dun,4,0,2,60000,true"</item>
<item>"mobile_hipri,5,0,3,60000,true"</item>
<item>"mobile_fota,10,0,2,60000,true"</item>
<item>"mobile_ims,11,0,2,60000,true"</item>
<item>"mobile_cbs,12,0,2,60000,true"</item>
<item>"bluetooth,7,7,0,-1,true"</item>
<item>"ethernet,9,9,9,-1,true"</item>
<!--add by blb-->
<item>"pppoe,15,15,5,-1,true"</item>
</string-array>
修正device/rockchip/common/overlay/frameworks/base/core/res/res/values/config.xml
<bool name="config_voice_capable">true</bool>
<!-- This device does not allow sms service. -->
<bool name="config_sms_capable">true</bool>
デバイス/rockchip/common/init.rk30board.rc
# for telephony function
on property:ro.boot.noril=false
setprop ro.radio.noril false
start ril-daemon
defconfigを変更する
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USBNET=y
CONFIG_USB_SERIAL_OPTION=y