Registro de depuração do módulo RK3588 Android12 Fibocom L716 4G

Antes de depurar, entre em contato com a fábrica do módulo para obter informações relevantes.

Modificação do kernel:

  1. Pode ser controlado pela configuração de referência do RK, basta configurar a posição do canto correspondente do diagrama esquemático.

rk_modem: rk-modem {
compatible="4g-modem-platdata";
pinctrl-names = "default";
pinctrl-0 = <&lte_vbat &lte_power_en &lte_reset>;
4G,vbat-gpio = <&gpio4 RK_PD0 GPIO_ACTIVE_HIGH>;
4G,power-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_LOW>;
4G,reset-gpio = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>;
status = "okay";
};
  1. Adicionar módulo VID, PID

kernel-5.10:
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -97,6 +97,18 @@ static void option_instat_callback(struct urb *urb);
 #define YISO_VENDOR_ID                         0x0EAB
 #define YISO_PRODUCT_U893                      0xC893
 
+/* Fibocom products */
+#define FIBOCOM_VENDOR_ID                      0x2cb7
+#define FIBOCOM_PRODUCT_L71X           0x0001
+
+#define FIBOCOM_USB_VENDOR_AND_INTERFACE_INFO(vend, cl, sc, pr) \
+.match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
+| USB_DEVICE_ID_MATCH_VENDOR, \
+.idVendor = (vend), \
+.bInterfaceClass = (cl), \
+.bInterfaceSubClass = (sc), \
+.bInterfaceProtocol = (pr)
+
 /*
  * NOVATEL WIRELESS PRODUCTS
  *
@@ -1873,6 +1885,11 @@ static const struct usb_device_id option_ids[] = {
        { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) },
        { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) },
 
+       { FIBOCOM_USB_VENDOR_AND_INTERFACE_INFO(FIBOCOM_VENDOR_ID, 0xff, 0xff, 0xff) },
+       { FIBOCOM_USB_VENDOR_AND_INTERFACE_INFO(FIBOCOM_VENDOR_ID, 0x0a, 0x00, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0x0256, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0x0579, 0xff, 0xff, 0xff) },
+
        { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
        { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
        { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */
@@ -2188,6 +2205,16 @@ static int option_probe(struct usb_serial *serial,
        if (iface_desc->bInterfaceClass == USB_CLASS_MASS_STORAGE)
                return -ENODEV;
 
+       if(serial->dev->descriptor.idVendor == FIBOCOM_VENDOR_ID &&
+               serial->dev->descriptor.idProduct == FIBOCOM_PRODUCT_L71X &&
+               serial->interface->cur_altsetting->desc.bInterfaceClass == 0x7)
+               return -ENODEV;
+
+       if(serial->dev->descriptor.idVendor == ZTE_VENDOR_ID &&
+               serial->dev->descriptor.idProduct == 0x0579 &&
+               serial->interface->cur_altsetting->desc.bInterfaceClass == 0x6)
+               return -ENODEV;
+
        /*
         * Don't bind reserved interfaces (like network ones) which often have
         * the same class/subclass/protocol as the serial interfaces.  Look at
  1. Itens de configuração de compilação do kernel

A plataforma abriu a configuração por padrão. Verifique a seguinte configuração:

CONFIG_PPP=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
CONFIG_PPP_DEFLATE=y
CONFIG_PPP_BSDCOMP=y
  1. Registre o módulo como uma placa de rede usb0

--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1718,8 +1718,13 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
                // can rename the link if it knows better.
                if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&
                    ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||
-                    (net->dev_addr [0] & 0x02) == 0))
+                    (net->dev_addr [0] & 0x02) == 0)){
+               if((le16_to_cpu(xdev->descriptor.idVendor) == 0x2CB7) &&
+                       (le16_to_cpu(xdev->descriptor.idProduct) == 0x0001))
+                       strcpy (net->name, "usb%d");
+               else
                        strcpy (net->name, "eth%d");
+               }
                /* WLAN devices should always be named "wlan%d" */
                if ((dev->driver_info->flags & FLAG_WLAN) != 0)
                        strcpy(net->name, "wlan%d");
  1. Após a conclusão da modificação acima, compile-a e grave-a na máquina para verificar se o dispositivo correspondente foi gerado.

console:/ # lsusb                                                              
Bus 006 Device 003: ID 2cb7:0001

console:/ # ifconfig  -a
usb0      Link encap:Ethernet  HWaddr 34:4b:50:00:00:00  Driver cdc_ether
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 TX bytes:0

console:/ # ls /dev/ttyUSB*                                                    
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3
  1. Solução de problemas:

Se o nó correspondente não for gerado, primeiro verifique se a fonte de alimentação está normal.

Verificando se o nó físico USB correspondente ao controle mestre está aberto

O módulo precisa garantir que o sinal VBUS esteja conectado à fonte de alimentação de 5 V. Se este sinal permanecer flutuante, a porta USB não poderá ser enumerada normalmente.

Modificação do Android:

1. Inicie o processo ril

hardware/ril
--- a/rild/rild.rc
+++ b/rild/rild.rc
@@ -1,5 +1,6 @@
-service vendor.ril-daemon /vendor/bin/hw/rild
+service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril-l716.so
     class main
-    user radio
-    group radio cache inet misc audio log readproc wakelock
-    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+    socket rild stream 660 root radio
+    socket rild-debug stream 660 radio system
+    user root
+    group radio cache inet misc audio sdcard_rw log

启动rild进程加载对应ril库
-l 指定 RIL 库加载路径

2. Ligue o serviço 4G do sistema

device/rockchip/common/BoardConfig.mk
BOARD_HAS_RK_4G_MODEM ?= true

3. Haverá alguns erros após abrir a opção BOARD_HAS_RK_4G_MODEM. Adicione o seguinte patch: (Se nenhum erro for relatado ao abrir a macro, não há necessidade de adicionar o seguinte patch. rk3568 pode ser compilado diretamente. Atualmente, ele é encontrado que rk3588 android12 reportará um erro)

/vendor/rockchip/common:
--- a/phone/phone.mk
+++ b/phone/phone.mk
@@ -26,8 +26,8 @@ PRODUCT_PACKAGES += \
     chat
 
 PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=false
-else
-PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=true
+# else
+# PRODUCT_PROPERTY_OVERRIDES +=ro.boot.noril=true
 endif
/device/rockchip/common:
--- a/modules/4g_modem.mk
+++ b/modules/4g_modem.mk
@@ -38,8 +38,8 @@ PRODUCT_PROPERTY_OVERRIDES += \
     vendor.rild.libpath=/vendor/lib64/librk-ril.so
 
 PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
-    $(LOCAL_PATH)/4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so
+    $(LOCAL_PATH)/../4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
+    $(LOCAL_PATH)/../4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so
hardware/interfaces:
--- a/compatibility_matrices/compatibility_matrix.6.xml
+++ b/compatibility_matrices/compatibility_matrix.6.xml
@@ -434,6 +434,11 @@
     </hal>
     <hal format="hidl" optional="true">
         <name>android.hardware.radio</name>
+        <version>1.1</version>
+        <version>1.2</version>
+        <version>1.3</version>
+        <version>1.4</version>
+        <version>1.5</version>
         <version>1.6</version>
         <interface>
             <name>IRadio</name>
@@ -450,11 +455,20 @@
             <instance>slot1</instance>
         </interface>
     </hal>
+    <hal format="hidl" optional="true">
+       <name>android.hardware.radio.deprecated</name>
+        <version>1.0</version>
+        <interface>
+        <name>IOemHook</name>
+        <instance>slot1</instance>
+        </interface>
+    </hal>    
     <hal format="hidl" optional="true">
         <name>android.hardware.radio.config</name>
         <!--
         See compatibility_matrix.4.xml on versioning of radio config HAL.
         -->
+        <version>1.0</version>
         <version>1.1</version>
         <interface>
             <name>IRadioConfig</name>

4. Adicione a fábrica de módulos para fornecer a compilação da biblioteca ril e especifique o caminho da biblioteca ril

Arquivos necessários: libreference-ril-l716.so

ght_ril_config.ini

Copie o arquivo para o diretório /device/rockchip/common/lib64

Adicione o seguinte código e copie-o para o sistema

/device/rockchip/common:
--- a/modules/4g_modem.mk
+++ b/modules/4g_modem.mk
@@ -35,11 +35,12 @@ DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
 
 ifeq ($(strip $(TARGET_ARCH)), arm64)
 PRODUCT_PROPERTY_OVERRIDES += \
-    vendor.rild.libpath=/vendor/lib64/librk-ril.so
+    vendor.rild.libpath=/vendor/lib64/libreference-ril-l716.so
 
 PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
-    $(LOCAL_PATH)/4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so
+    $(LOCAL_PATH)/../4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
+    $(LOCAL_PATH)/../4g_modem/lib64/libreference-ril-l716.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libreference-ril-l716.so \
+    $(LOCAL_PATH)/../4g_modem/lib64/ght_ril_config.ini:system/etc/ght_ril_config.ini
 else
 PRODUCT_PROPERTY_OVERRIDES += \
     vendor.rild.libpath=/vendor/lib/librk-ril.so

5. Modifique os atributos prop exigidos pelo módulo

device/rockchip/rk3588:
--- a/device.mk
+++ b/device.mk
@@ -82,6 +82,9 @@ PRODUCT_PROPERTY_OVERRIDES += \
                 ro.ril.ecclist=112,911 \
                 ro.opengles.version=196610 \
                 wifi.interface=wlan0 \
+                rild.libargs=-d /dev/ttyUSB2 \
+                ril.fibocom.dialmode=1 \
+                ril.fibocom.NetifName=usb0 \
参数说明:
rild.libargs  AT指令端口,可询问模块厂或向端口发送AT指令可得知,一般只ttyUSB1 ttyUSB2
ril.fibocom.dialmode   拨号模式    / 0 : ppp 拨号, 1 : ECM 拨号 //推荐使用ECM
ril.fibocom.NetifName   自定义拨号网卡,根据实际生成网卡填写

6. Adicionar ícone de sinal, ícone 4G

/device/rockchip/common:
--- a/overlay_wifi_only/frameworks/base/core/res/res/values/config.xml
+++ b/overlay_wifi_only/frameworks/base/core/res/res/values/config.xml
@@ -22,5 +22,5 @@
          If true, this means that the device supports data connectivity through
          the telephony network.
          This can be overridden to false for devices that support voice and/or sms . -->
-    <bool name="config_mobile_data_capable">false</bool>
+    <bool name="config_mobile_data_capable">true</bool>
 </resources>

/device/rockchip/rk3588:
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -31,6 +31,14 @@
     <!-- the 6th element indicates boot-time dependency-met value. -->
     <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,2,60000,false"</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>
     </string-array>

7.Compile a gravação do Android

8. Exibição da interface do sistema

Perguntas frequentes: se você tiver algum problema, solucione-o da seguinte maneira:

9. Após a compilação, verifique se as propriedades do sistema foram definidas com sucesso.

console:/ # getprop | grep ril                                                 
[init.svc.ril-daemon]: [running]
[init.svc_debug_pid.ril-daemon]: [505]
[ril.currentapntype]: [default]
[ril.fibocom.NetifName]: [usb0]
[ril.fibocom.dialmode]: [1]
[ril.fibocom.version]: [Fibocom_RIL_V12X.06.V1.0.7]
[ril.function.dataonly]: [1]
[rild.libargs]: [-d]
[ro.boot.noril]: [false]
[ro.boottime.ril-daemon]: [5861295027]
[ro.ril.ecclist]: [112,911]
[vendor.rild.libpath]: [/vendor/lib64/libreference-ril-l716.so]

9.1 Verifique se o processo rild foi iniciado

console:/ # ps -ef | grep rild
root           505     1 0 10:03:39 ?     00:00:00 rild -l /vendor/lib64/libreference-ril-l716.so
root         19667  2210 3 10:43:59 ttyFIQ0 00:00:00 grep rild

Solução de problemas do comando 9.2AT

输入AT指令到对应端口号查看是否检测到SIM卡
开两个adb端口,一个执行echo,一个执行cat
echo -e "AT+CPIN?" > /dev/ttyUSB2
cat /dev/ttyUSB2
CPIN: READY

查看信号强度:
echo -e "AT+CSQ\r\n" >/dev/ttyUSB2
cat /dev/ttyUSB2
+CSQ: 14,99

9.3 Ifconfig -a Verifique se a placa de rede foi iniciada. Se não for iniciada, execute manualmente ifoconfig usb0 up ou insira configurações - opções de rede

9.4 teste de rede de ping

Se você tiver alguma dúvida, confirme se a biblioteca ril corresponde ao módulo e à versão do Android e se o sistema carregou a biblioteca ril.

adb logcat –b radio –v time Analise o log e solucione problemas com comandos AT ou envie o log para a fábrica do módulo para obter ajuda.

おすすめ

転載: blog.csdn.net/qq1226176787/article/details/129715489