1. /**************************************************************************
  2. * I.MX6 Android U-blox miniPCI 4G porting
  3. * 声明:
  4. * 在移植U-blox的4G模块的过程中遇到了不少的问题,有不少是自己的这边疏忽
  5. * 的问题,无论怎么说,问题解决了就行。
  6. *
  7. * 2016-1-11 深圳 南山平山村 曾剑锋
  8. *************************************************************************/
  9.  
  10. 一、参考文档:
  11. . 飞思卡尔i.MX 6Quad Android 4.0.43G驱动移植
  12. http://blog.csdn.net/xnwyd/article/details/9498235
  13. . 关于 android RIL 调试
  14. http://blog.lytsing.org/archives/476.html
  15.  
  16. 二、ublox设备miniPCI识别到的设备节点:
  17. . 只有一个: /dev/ttyACM0.
  18. . 原因如下:
  19. the USB mode of MPCI-L210 module in "RNDIS" mode, so it will only create one and only one ttyACM0 node. If you need to use ttyACM0, ttyACM1 and ttyACM2. please execute following command:
  20. // Set USB configuration to "fairly back-compatible" and disable the audio over USB.
  21. . AT+UUSBCONF=,””,
  22. // It need reboot the module.
  23. . AT+CFUN=
  24. // this command will reboot the module, or you can reboot device instead of.
  25. . AT+UUSBCONF?
  26. For more detail description, please check attach file(AT-CommandExample), chapter USB profile configuration.
  27.  
  28. 三、重新配置ublox
  29. . 参考《AT Commands Examples Examples for u-blox cellular modules Application Note》;
  30. . chapter USB profile configuration: Fairly back-compatible profile
  31. This is the configuration (<id>=) similar to the one implemented in the u-blox LISA-U series. The interfaces available are:
  32. . CDC-ACM for AT command and data
  33. . CDC-ACM for GNSS tunnelling
  34. . CDC-ACM for SIM Access profile (SAP)
  35. . CDC-ACM for diagnostic
  36. This configuration is identified by:
  37. VID = 0x1546
  38. PID = 0x1141
  39. 省略后面的命令说明...
  40. . 使用串口工具,对ublox进行配置,我使用的是自己之前写的命令行的串口工具,参考:《I.MX6 Android Linux UART send receive with multi-thread and multi-mode demo
  41. root@android:/data/local # ./autorun.sh
  42. serialString : /dev/ttyACM0.
  43. baudRate .
  44. workMode: send and recv.
  45. AT+UUSBCONF=,"",
  46.  
  47. OK
  48.  
  49. . dmesg信息提示如下:
  50. ......
  51. usb -1.4: new high speed USB device number using fsl-ehci
  52. imx-ipuv3 imx-ipuv3.: IPU DMFC DP HIGH RESOLUTION: (,), 5B(~), 5F(,)
  53. cdc_acm -1.4:1.0: This device cannot do calls on its own. It is not a modem.
  54. cdc_acm -1.4:1.0: ttyACM0: USB ACM device
  55. cdc_acm -1.4:1.2: This device cannot do calls on its own. It is not a modem.
  56. cdc_acm -1.4:1.2: ttyACM1: USB ACM device
  57. cdc_acm -1.4:1.4: This device cannot do calls on its own. It is not a modem.
  58. cdc_acm -1.4:1.4: ttyACM2: USB ACM device
  59. cdc_acm -1.4:1.6: This device cannot do calls on its own. It is not a modem.
  60. cdc_acm -1.4:1.6: ttyACM3: USB ACM device
  61. cdc_acm -1.4:1.8: This device cannot do calls on its own. It is not a modem.
  62. cdc_acm -1.4:1.8: ttyACM4: USB ACM device
  63. cdc_acm -1.4:1.10: This device cannot do calls on its own. It is not a modem.
  64. cdc_acm -1.4:1.10: ttyACM5: USB ACM device
  65. ......
  66. . 厂家的FAE说上面的错误可以不用关心
  67. This device cannot do calls on its own. It is not a modem.
  68.  
  69. 四、配置Android系统:
  70. . 参考文档:《Android RIL Production delivery Source code Application Note
  71. . 参考章节:Appendix - D Android 4.1/ 4.2 / 4.3 / 4.4 module configuration
  72. To enable the USB module connection, configure Ueventd.[platform].rc, AndroidProducts.mk and init.rc files as described in sections below. Before changing the files, below are some necessary steps to follow.
  73.  
  74. 五、Error
  75. . Error1
  76. . 出错信息:
  77. init: cannot execve('/system/bin/uril-repo.sh'): No such file or directory
  78. . 查看uril-repo.sh文件:busybox vi uril-repo.sh
  79. #!/system/bin/sh^M
  80. ^M
  81. URIL_REPO_DST=/data/uril/repository.txt^M
  82. ^M
  83. rril_repo_missing=`ls $URIL_REPO_DST`true^M
  84. ^M
  85. if (${rril_repo_missing}) ; then^M
  86. mkdir /data/uril^M
  87. chmod /data/uril^M
  88. cat /etc/uril/repository.txt > $URIL_REPO_DST^M
  89. chmod $URIL_REPO_DST^M
  90. sync^M
  91. /system/bin/log -t RIL-repo "created $URIL_REPO_DST"^M
  92. else^M
  93. /system/bin/log -t RIL-repo "$URIL_REPO_DST exists"^M
  94. fi^M
  95. ^M
  96. # set this property after checking that repository exists or after it's created^
  97. # This is checked in rildmain mainloop during RIL_Init^M
  98. /system/bin/setprop "net.uril.repository" "ready"^M
  99. ^M
  100. # set this property to configure emergency number if required^M
  101. #/system/bin/setprop "ril.ecclist" "111,112,113,115,117,118,119,122,125,127,911,
  102. - uril-repo.sh / %
  103. . 通过查看文件,发现其中的每行最后都多出了^M这个字符,貌似这个文件是在Windows上面编辑的。
  104. . 删除这些^M
  105. . 但是这个字符在UbuntuVim中都看不到,这貌似有点奇怪。
  106. . 有点忧伤的地方在于U-Blox提供的etc下的配置文件都是这种文件,他们提供错了文档。
  107. . Error2:
  108. . adb logcat -v time -b radio > logcat_info.txt
  109. . 错误信息:
  110. - ::05.570 I/RIL ( ): 3G modem monitor thread is start
  111.  
  112. - ::05.570 E/RILD ( ): dlopen failed: Cannot load library: load_library(linker.cpp:): library "/system/lib/libhuawei-ril.so" not found
  113.  
  114. - ::05.620 I/RIL-repo( ): created /data/uril/repository.txt
  115.  
  116. - ::10.100 E/RILD ( ): dlopen failed: Cannot load library: load_library(linker.cpp:): library "/system/lib/libhuawei-ril.so" not found
  117.  
  118. ......
  119. . cat hardware/ril/rild/rild.c
  120. ......
  121. // #define REFERENCE_RIL_DEF_PATH "/system/lib/libhuawei-ril.so"
  122. ......
  123. int main(int argc, char **argv)
  124. {
  125. ......
  126. switch (modem_type){
  127. case ZTE_MODEM:
  128. rilLibPath = REFERENCE_RIL_ZTE_PATH;
  129. break;
  130.  
  131. case HUAWEI_MODEM:
  132. case AMAZON_MODEM:
  133. default:
  134. rilLibPath = REFERENCE_RIL_DEF_PATH;
  135. break;
  136. }
  137. ......
  138. }
  139. . 修改REFERENCE_RIL_DEF_PATH的值为:
  140. "/system/lib/librapid-ril-core.so"
  141. . 根据rild.c中代码的运行流程可知,命令行中的-l参数是无效。
  142. . 能够获取GSM信号,但无法获取网络数据:
  143. . 模块问题检查:
  144. root@android:/data/local # ./autorun.sh
  145. CMD: AT+UUSBCONF?.
  146.  
  147. +UUSBCONF: ,"RNDIS",,"0x1146"
  148.  
  149. OK
  150. CMD: AT+UUSBCONF=,"",.
  151.  
  152. OK
  153. CMD: AT+CFUN=.
  154. usb -1.4: USB disconnect, device number
  155. usb -1.4: new high speed USB device number using fsl-ehci
  156. usb -1.4: USB disconnect, device number
  157. usb -1.4: new high speed USB device number using fsl-ehci
  158. cdc_acm -1.4:1.0: This device cannot do calls on its own. It is not a modem.
  159. cdc_acm -1.4:1.0: ttyACM0: USB ACM device
  160. cdc_acm -1.4:1.2: This device cannot do calls on its own. It is not a modem.
  161. cdc_acm -1.4:1.2: ttyACM1: USB ACM device
  162. cdc_acm -1.4:1.4: This device cannot do calls on its own. It is not a modem.
  163. cdc_acm -1.4:1.4: ttyACM2: USB ACM device
  164. cdc_acm -1.4:1.6: This device cannot do calls on its own. It is not a modem.
  165. cdc_acm -1.4:1.6: ttyACM3: USB ACM device
  166. cdc_acm -1.4:1.8: This device cannot do calls on its own. It is not a modem.
  167. cdc_acm -1.4:1.8: ttyACM4: USB ACM device
  168. cdc_acm -1.4:1.10: This device cannot do calls on its own. It is not a modem.
  169. cdc_acm -1.4:1.10: ttyACM5: USB ACM device
  170. CMD: AT+UUSBCONF?.
  171.  
  172. +UUSBCONF: ,"",,"0x1141"
  173.  
  174. OK
  175. usb -1.4: USB disconnect, device number
  176. usb -1.4: new high speed USB device number using fsl-ehci
  177. usb -1.4: USB disconnect, device number
  178. usb -1.4: new high speed USB device number using fsl-ehci
  179. cdc_acm -1.4:1.2: This device cannot do calls on its own. It is not a modem.
  180. cdc_acm -1.4:1.2: ttyACM0: USB ACM device
  181. CMD: AT+UUSBCONF?.
  182. AT+UUSBCONF?
  183. +UUSBCONF: ,"RNDIS",,"0x1146"
  184.  
  185. OK
  186.  
  187. ATE0V1
  188. OK
  189. . 1中可以看出:
  190. 将模块设置为Fairly back-compatible模式的时候,移植的系统又会自动将模块
  191. 重置为High throughput模式,无法稳定工作在Fairly back-compatible模式。
  192. . 原因是 "hardware/ril/ublox_ril/CORE/ND/systemmanager.cpp” 的 1729 行.
  193. . 解决办法:
  194. . 参考《AndroidRIL-SourceCode_AppNote.pdf》中"章节 I, Repository file configuration".
  195. . cat build/target/product/rootdir/etc/uril/repository.txt
  196. ......
  197. // Modem settings
  198. Group Modem
  199. SupportedModem UbloxModem
  200. //NetworkInterfaceName USB // 修改为ppp
  201. NetworkInterfaceName ppp
  202. DisableModemReset
  203. ......
  204. // USB Profile Configuration
  205. Group USBUBM
  206. // 将RNDIS模式修改为CDC-ACM模式
  207. // USBCONF 3 // 0: CDC-ACM, 2: CDC-ECM, 3: RNDIS
  208. USBCONF // 0: CDC-ACM, 2: CDC-ECM, 3: RNDIS
  209. UBMCONF // 1: Router, 2: Bridge
  210. ......

I.MX6 Android U-blox miniPCI 4G porting的更多相关文章

  1. I.MX6 Android iperf3 porting failed

    /***************************************************************************** * I.MX6 Android iperf ...

  2. I.MX6 Android i2c-tools porting

    /************************************************************************** * I.MX6 Android i2c-tool ...

  3. I.MX6 Android 5.1 快速合成系统

    /**************************************************************************** * I.MX6 Android 5.1 快速 ...

  4. I.MX6 Android backlight modify by C demo

    /************************************************************************** * I.MX6 Android backligh ...

  5. I.MX6 Android netperf

    /***************************************************************************** * I.MX6 Android netpe ...

  6. I.MX6 android 设置 默认 动态桌面

    /************************************************************************ * I.MX6 android 设置 默认 动态桌面 ...

  7. I.MX6 android 获取framebuffer信息

    /******************************************************************************** * I.MX6 android 获取 ...

  8. I.MX6 Android Linux shell MMPF0100 i2c 设置数据

    #!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 设置数据 # 说明: # 本文主要记录通过shell脚本来设置 ...

  9. I.MX6 Android Linux shell MMPF0100 i2c 获取数据

    #!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 获取数据 # 说明: # 本文主要记录通过shell脚本来获取 ...

随机推荐

  1. Atmel Studio 6.0新建项目

        使用Atmel Studio 6.0新建一个项目 连接Atmel 开发板与调试板,开发板使用的芯片是ATXMGEA128A1 注意: 以上对于开发板与调试板的连接,需要非常注意连接时线的方向, ...

  2. 1-Highcharts环境介绍及配置

    Highcharts:功能强大.开源.美观.图表丰富.兼容绝大多数浏览器的纯js图表库,废话不多说,直接进入主题! 首先,下载Highcharts包文件,下载地址如下: 中文网下载中心:http:// ...

  3. 地图索引 R-tree

    http://blog.csdn.net/v_JULY_v/article/details/6530142 984年,加州大学伯克利分校的Guttman发表了一篇题为“R-trees: a dynam ...

  4. DataGridView之行的展开与收缩

    很多数据都有父节点与子节点,我们希望单击父节点的时候可以展开父节点下的子节点数据. 比如一个医院科室表,有父科室与子科室,点击父科室后,在父科室下面可以展现该科室下的所有子科室. 我们来说一下在Dat ...

  5. 让IE系列浏览器支持HTML5(share)

    引用Google的html5.js文件 <!--[if IE]> <script src=”http://html5shiv.googlecode.com/svn/trunk/htm ...

  6. Java传入参数个数不确定可用(Type ... values)

    /** * 可变长的参数. * 有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法: * 1. 重载,多重载几个方法,尽可能的满足参数的个数.显然这不是什么好办法. ...

  7. 李洪强iOS开发支付集成之微信支付

    iOS开发支付集成之微信支付 微信支付也是需要签名的,也跟支付宝一样,可以在客户端签名,也可以在后台签名(当然,为了安全还是推荐在服务器上做签名,逻辑也比较好理解). 1 - 集成前首先要看看文档 开 ...

  8. 查看服务器的TCP/IP(http)连接情况

    6.那具体到,怎样监听一个具体程序的TCP/IP连接情况呢???!! 就要用:netstat -n|grep 80 命令来查看具体端口对应程序的TCP/IP连接情况了 netstat -n|grep ...

  9. 计算XX年的某月某日是当年的第多少天?是星期几?

    /** * 编写程序,计算2013年的某月某日是当年的第多少天?是星期几?已知2013年元旦是星期二. */ import java.util.Scanner; public class Date { ...

  10. TCoolMemo

    我们先起个名字叫做TCoolMemo.以上篇已经讲了很多组件的技术,这里就只说出几个重点.其余不多说了. 首先,该Memo从CustomMemo继承,它有这样外观:属于平面的,边框是可以设置颜色的线, ...