Difference between revisions of "IoTGateway/Features/Linux/Module"

From ESS-WIKI
Jump to: navigation, search
m (Winston.huang moved page IoTGateway/BSP/Linux/iMX6/Features/Module to IoTGateway/Features/Linux/Module without leaving a redirect)
(AIW-W154)
 
(101 intermediate revisions by 8 users not shown)
Line 1: Line 1:
===Supported Module List===
+
== 3G ==
{| class="wikitable"
+
 
|-
+
=== EWM-C106FT01E ===
! Name !! Function !! Description
+
 
|-
+
pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' user username password password /dev/ttyUSB2 460800 nodetach crtscts debug usepeerdns defaultroute &
| [http://buy.advantech.com/HSUPA+Mini+PCIe+Card+wireless+Mi/EWM+C106FT01E/model-EWM-C106FT01E.htm EWM-C106FT01E] || 3G ||HSUPA Full-size Mini PCIe Card
+
 
|-
+
=== EWM-C109FT01E ===
| [http://buy.advantech.com.tw/EWM-W142F01E-EWM-W142F01E/EWM-W142F01E/model-EWM-W142F01E.htm EWM-W142F01E] || WiFi ||CIRCUIT MODULE, 802.11 b/g/n,AR9287,2T2R,Full size Mini PCIe
+
 
|-
+
pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' user username password password /dev/ttyUSB3 460800 nodetach crtscts debug usepeerdns defaultroute &
| [http://buy.advantech.com.tw/product/EWM-W151H01E-EWM-W151H01E/EWM-W151H01E/model-EWM-W151H01E.htm EWM-W151H01E] || WiFi || Advantech 802.11bgn RTL8188EE 1T1R, 1-connector
+
 
|-
+
=== Sierra AirPrime MC8090 ===
| [http://buy.advantech.com/product/EWM-W155H01E-EWM-W155H01E/EWM-W155H01E/model-EWM-W155H01E.htm EWM-W155H01E] || WiFi || Half-size Mini PCIe Card with 802.11abgn 2T2R with BT4.0, Atheros AR9462
+
 
|}
+
The following operations are performed with UBC-221 using U221LBV1050.
 +
 
 +
*linux kernel config
 +
 
 +
:set the following lines to <tt>meta-advantech/recipes-kernel/linux/linux-yocto-clanton/advantech.cfg</tt>
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="text">
 +
CONFIG_USB_SERIAL_FTDI_SIO=m
 +
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 +
</syntaxhighlight></div>
 +
:add the following line to <tt>meta-advantech/recipes-kernel/advantech-init/files/advantech.conf</tt>
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="text">
 +
sierra
 +
</syntaxhighlight></div>
 +
:execute the following command
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="text">
 +
$ bitbake advantech-init
 +
</syntaxhighlight></div>
 +
*rebuild the kernel
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="bash">
 +
$ bitbake linux-yocto-clanton
 +
</syntaxhighlight></div>
 +
*rebuild the full image
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="bash">
 +
$ bitbake image-full
 +
</syntaxhighlight></div>
 +
*practical test on target board
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="text">
 +
# pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' \
 +
user username password password /dev/ttyUSB3 460800 nodetach crtscts debug usepeerdns defaultroute &
 +
</syntaxhighlight>[[File:Sierra AirPrime MC8090 connecting.png|850px|Sierra AirPrime MC8090 connecting.png]]<syntaxhighlight lang="text">
 +
# ifconfig
 +
</syntaxhighlight> [[File:Sierra AirPrime MC8090 ifconfig.png|600px|Sierra AirPrime MC8090 ifconfig.png]]<syntaxhighlight lang="text">
 +
# ping -c5 8.8.8.8
 +
</syntaxhighlight> [[File:Sierra AirPrime MC8090 ping.png|500px|Sierra AirPrime MC8090 ping.png]]</div>
 +
=== Telit HE910-D ===
 +
 
 +
The following operations are performed with UBC-221 using U221LBV1050.
 +
 
 +
*practical test on target board
 +
<div style="margin-left: 2em;"><syntaxhighlight lang="text">
 +
# modprobe cdc-acm
 +
</syntaxhighlight>[[File:Telit HE910-D modprobe.png|750px|Telit HE910-D modprobe.png]]<syntaxhighlight lang="text">
 +
# dmesg | grep ttyACM
 +
</syntaxhighlight> [[File:Telit HE910-D dmesg.png|480px|Telit HE910-D dmesg.png]]<syntaxhighlight lang="text">
 +
# pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' \
 +
user username password password /dev/ttyACM0 460800 nodetach crtscts debug usepeerdns defaultroute &
 +
# pinc -c5 8.8.8.8
 +
</syntaxhighlight> [[File:Telit HE910-D pppd 2.png|RTENOTITLE]] [[File:Telit HE910-D ping.png|RTENOTITLE]]</div>
 +
=== Quectel UC20 ===
 +
 
 +
3G module Porting (QUECTEL UC20)
 +
 
 +
In linux kernel
 +
 
 +
1. You need to add the mechanism for processing zero packets during transmission of “usb_wwan.c” file under “[KERNEL]/drivers/usb/serial”.
 +
 
 +
You need to add the following statements to the “usb_wwan_write” and “usb_wwan_setup_urb” function, as shown below:
 +
<pre>…
 +
#include "usb-wwan.h"
 +
 
 +
+ #ifdef CONFIG_ARCH_ADVANTECH
 +
+ #define HW_bcdUSB 0x0110
 +
+ #define HUAWEI_VENDOR_ID 0x12d1
 +
+ #endif
 +
 
 +
void usb_wwan_dtr_rts(struct usb_serial_port *port, int on)
 +
 +
 +
 +
 
 +
int usb_wwan_write(struct tty_struct *tty, struct usb_serial_port *port,
 +
  const unsigned char *buf, int count)
 +
{
 +
 +
 +
int left, todo;
 +
struct urb *this_urb = NULL; /* spurious */
 +
+ #ifdef CONFIG_ARCH_ADVANTECH
 +
+ struct usb_host_endpoint *ep=NULL;
 +
+ #endif
 +
int err;
 +
unsigned long flags;
 +
 +
 +
 +
/* send the data */
 +
memcpy(this_urb->transfer_buffer, buf, todo);
 +
this_urb->transfer_buffer_length = todo;
 +
 
 +
+ #ifdef CONFIG_ARCH_ADVANTECH 
 +
+  if (IS_RSB_6410)
 +
+  {
 +
+      if((HUAWEI_VENDOR_ID == port->serial->dev->descriptor.idVendor)
 +
+      && (HW_bcdUSB&nbsp;!= port->serial->dev->descriptor.bcdUSB)){
 +
+      ep = usb_pipe_endpoint(this_urb->dev, this_urb->pipe);
 +
+      if(ep && (0&nbsp;!= this_urb->transfer_buffer_length)
 +
+      && (0 == this_urb->transfer_buffer_length&nbsp;%
 +
+      ep->desc.wMaxPacketSize)){
 +
+      this_urb->transfer_flags |= URB_ZERO_PACKET;
 +
+      }
 +
+      }
 +
+  }
 +
+ #endif
 +
 
 +
spin_lock_irqsave(&intfdata->susp_lock, flags);
 +
if (intfdata->suspended) {
 +
usb_anchor_urb(this_urb, &portdata->delayed);
 +
 +
 +
 +
 +
 +
 +
 +
/* Helper functions used by usb_wwan_setup_urbs */
 +
static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
 +
      int endpoint,
 +
      int dir, void *ctx, char *buf, int len,
 +
      void (*callback) (struct urb *))
 +
{
 +
struct usb_serial *serial = port->serial;
 +
struct urb *urb;
 +
 
 +
urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */
 +
if (!urb)
 +
return NULL;
 +
 
 +
/* Fill URB using supplied data. */
 +
usb_fill_bulk_urb(urb, serial->dev,
 +
  usb_sndbulkpipe(serial->dev, endpoint) | dir,
 +
  buf, len, callback, ctx);
 +
 
 +
+ #ifdef CONFIG_ARCH_ADVANTECH
 +
+    if (dir == USB_DIR_OUT) {
 +
+    struct usb_device_descriptor *desc = &serial->dev->descriptor;
 +
+    if (desc->idVendor == 0x05C6 && (desc->idProduct == 0x9003 || desc->idProduct ==
 +
+    0x9090 || desc->idProduct == 0x9215))
 +
+    urb->transfer_flags |= URB_ZERO_PACKET;
 +
+    }
 +
+ #endif
 +
return urb;
 +
}
 +
</pre>
 +
 
 +
2. Add UC15/UC20/EC20's Vendor ID and Product ID in "option_ids[]" in the file "drivers/usb/serial/option.c":
 +
<pre>static const struct usb_device_id option_ids[] = {
 +
 +
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9090) }, //for Quectel UC15
 +
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9003) }, //for Quectel UC20
 +
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9215) }, //for Quectel EC20
 +
 +
}
 +
</pre>
 +
 
 +
== 4G ==
 +
 
 +
=== Telit LE910C4 ===
 +
 
 +
;For Yocto 2.5 and later
 +
 
 +
We have to enable '''CONFIG_USB_SERIAL_OPTION=y'''
 +
 
 +
;Using command as below to connect
 +
:
 +
 
 +
Setup APN
 +
 
 +
echo -e "AT+CGDCONT=2,\"ip\",\"internet\"\r\n" >/dev/ttyUSB2
 +
 
 +
Connect
 +
 
 +
pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99***2#" "CONNECT" ""' user username password password /dev/ttyUSB2 460800 nodetach crtscts debug usepeerdns defaultroute &
 +
 
 +
==== For EPC-R7200 ====
 +
 
 +
[[:File:Telit_le910c4_on_EPCR7200.pdf|File:Telit_le910c4_on_EPCR7200.pdf]]
 +
 
 +
=== Sierra AirPrime MC7304 ===
 +
 
 +
;For Yocto 1.8
 +
 
 +
We have to enable '''CONFIG_USB_SERIAL_QUALCOMM=m'''
 +
 
 +
;For Yocto 2.0 and later
 +
 
 +
We have to enable '''CONFIG_USB_SERIAL_OPTION=y'''
 +
 
 +
 
 +
 
 +
;Using command as below to connect
 +
:
 +
 
 +
pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' user username password password /dev/ttyUSB2 460800 nodetach crtscts debug usepeerdns defaultroute &
 +
 
 +
=== Sierra AirPrime MC7430 ===
 +
 
 +
Modify drivers/usb/serial/option.c
 +
 
 +
--- a/drivers/usb/serial/option.c
 +
+++ b/drivers/usb/serial/option.c
 +
@@ -1123,6 +1123,8 @@ static const struct usb_device_id option_ids[] = {
 +
        { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */
 +
        { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x68c0, 0xff),
 +
          .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC73xx */
 +
+      { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x9071, 0xff),
 +
+        .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC7430 */
 +
        { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x9041, 0xff),
 +
          .driver_info = (kernel_ulong_[[:File:4G_rndis.zip]])&sierra_mc73xx_blacklist }, /* MC7305/MC7355 */
 +
        { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
 +
 
 +
=== Sierra AirPrime EM7565 ===
 +
 
 +
Verified on RSB-4760 (Qualcomm db410c)
 +
 
 +
[https://github.com/ADVANTECH-Corp/meta-advantech/tree/krogoth/meta-qcom-410c/recipes-devtools Drivers in Yocto 2.1]
 +
 
 +
[https://github.com/ADVANTECH-Corp/meta-advantech/blob/krogoth/meta-tools/recipes-test/3g-script/files/sierra-em7565.sh Script for data connection]
 +
 
 +
=== AM Telecom AMM561KT ===
 +
 
 +
The following operations are performed with UBC-222(U222LBV2011).
 +
 
 +
*linux kernel config
 +
 
 +
 
 +
 
 +
::<tt><small>Device Drivers ---></small></tt>
 +
:::<tt><small>[*] USB support ---></small></tt>
 +
::::<tt><small><span style="color:red">'''&lt;M&gt; Support for Host-side USB'''</span></small></tt>
 +
:::<tt><small>[*] Network device support ---></small></tt>
 +
::::<tt><small>USB Network Adapters ---></small></tt>
 +
:::::<tt><small>&lt;M&gt; Multi-purpose USB Networking Framework</small></tt>
 +
:::::<tt><small>&lt;M&gt; Host for RNDIS and ActiveSync devices (EXPERIMENTAL)</small></tt>
 +
 
 +
 
 +
 
 +
*load drivers
 +
<div style="margin-left: 2em">
 +
# rmmod usbserial
 +
# modprobe rndis_host
 +
# modprobe usbserial vendor=0x1ECB product=0x0205
 +
 
 +
e.g. put the 3 lines to /etc/rc.local<br/>[[File:AMM561KT load drivers.png|720px|AMM561KT load drivers.png]]
 +
</div>
 +
*list usb devices
 +
<div style="margin-left: 2em">
 +
# lsusb
 +
# ll /dev/ttyUSB[012]
 +
 
 +
[[File:AMM561KT list usb devices.png|600px|AMM561KT list usb devices.png]]
 +
</div>
 +
=== Fibocom NL668 ===
 +
 
 +
*[[:File:Fibocom_NL668.docx|Fibocom_NL668]]
 +
 
 +
=== EWM-C145 ===
 +
 
 +
*[[:File:EWM-4G_porting_guide_on_DS100_new.docx|EWM-4G_Porting_Guide_On_DS100]]
 +
 
 +
=== EWM-C117 ===
 +
 
 +
Default RNDIS Mode
 +
 
 +
Use the script to connect to internet
 +
 
 +
[[:File:4G_rndis.zip]]
 +
 
 +
Change to normal mode
 +
 
 +
[[:File:module-ewm-117-for-ppp.zip]]
 +
 
 +
Connect to internet by pppd demand
 +
 
 +
[[:File:4G_ppp.zip]]
 +
 
 +
==== Reference from AE Phill ====
 +
 
 +
[[:File:RSB-4220_EWM-C117.docx]]
 +
 
 +
[[:File:EWM-C117_RSB-4760_internaluse.docx|:File:EWM-C117 RSB-4760 internaluse.docx]]
 +
 
 +
==== Made from RD ====
 +
 
 +
[[:File:EWM-C117_for_RK3399_ds100.docx|File:EWM-C117_for_RK3399_ds100.docx]]
 +
 
 +
== Bluetooth ==
 +
 
 +
=== EWM-W155H01E ===
 +
 
 +
Please refer to [[IoTGateway/BSP/Linux/Quark/Bluetooth_Testing_Guide|Bluetooth Testing Guide for Quark Platform]] for all operations performed using UBC-222 with U222LBV2011.
 +
 
 +
=== AW-CB178NF ===
 +
 
 +
==== Porting AzureWave Wifi BT module ====
 +
 
 +
1. Add compile option ins arch/arm/configs/imx_v7_adv_deconfig
 +
<pre>…
 +
CONFIG_BT_HIDP=y
 +
CONFIG_BT_HCIBTUSB=y
 +
CONFIG_BT_HCIVHCI=y
 +
+ CONFIG_BT_MRVL=m
 +
+ CONFIG_BT_MRVL_SDIO=m
 +
CONFIG_BT_ATH3K=m
 +
CONFIG_CFG80211=m
 +
CONFIG_CFG80211_WEXT=y
 +
 +
 +
CONFIG_USB_NET_RNDIS_HOST=y CONFIG_USB_NET_CDC_SUBSET=m
 +
CONFIG_USB_NET_ZAURUS=m
 +
+ CONFIG_LIBERTAS_THINFIRM=m
 +
CONFIG_ATH_CARDS=m
 +
CONFIG_ATH9K=m
 +
CONFIG_ATH9K_LEGACY_RATE_CONTROL=y
 +
 +
CONFIG_RT2800USB_RT55XX=y
 +
CONFIG_RT2800USB_UNKNOWN=y
 +
CONFIG_RTL8188EE=m
 +
+ CONFIG_MWIFIEX=m
 +
+ CONFIG_MWIFIEX_SDIO=m
 +
CONFIG_INPUT_POLLDEV=y
 +
#CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 +
CONFIG_INPUT_EVDEV=y …
 +
</pre>
 +
 
 +
2. Modify in arch/arm/boot/dts/imx6qdl-advantech.dtsi
 +
<pre>...
 +
usdhc1 {
 +
pinctrl_usdhc1_1: usdhc1grp-1 {
 +
fsl,pins = <
 +
MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
 +
MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
 +
MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
 +
MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
 +
MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
 +
MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
 +
>;
 +
};
 +
};
 +
...
 +
</pre>
 +
 
 +
3. add in arch/arm/boot/dts/imx6q-[board].dts
 +
<pre>...
 +
&iomuxc {
 +
pinctrl-names = "default";
 +
pinctrl-0 = <&pinctrl_hog_1 &pinctrl_hog_2>;
 +
 
 +
hog {
 +
pinctrl_hog_1: hoggrp-1 {
 +
                        fsl,pins = <
 +
                                MX6QDL_PAD_SD3_DAT4__GPIO7_IO01        0x80000000      /* SD3_CD */
 +
                                MX6QDL_PAD_SD3_DAT5__GPIO7_IO00        0x80000000      /* SD3_WP */
 +
                                MX6QDL_PAD_SD2_CMD__GPIO1_IO11        0x80000000      /* SDIO RST */
 +
                                MX6QDL_PAD_SD2_CLK__GPIO1_IO10        0x80000000      /* SDIO WAKE */
 +
+                              MX6QDL_PAD_NANDF_D7__GPIO2_IO07        0x80000000      /* M.2 WLAN OFF */
 +
+                              MX6QDL_PAD_NANDF_D1__GPIO2_IO01        0x80000000      /* M.2 BT OFF */
 +
                                MX6QDL_PAD_GPIO_0__CCM_CLKO1            0x130b0    /* AUDIO CLK */
 +
                        >;
 +
                };
 +
...
 +
</pre>
 +
 
 +
==== Testing Operations ====
 +
<pre>hciconfig hci0 up
 +
hcitool dev | grep hci
 +
hcitool scan
 +
</pre>
 +
 
 +
[[File:BT.JPG|RTENOTITLE]]
 +
 
 +
== WiFi ==
 +
 
 +
=== EWM-W142F01E ===
 +
 
 +
For Yocto 1.8&nbsp;
 +
 
 +
Check wlan0 existing or not<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# ifconfig wlan0 up
 +
 
 +
#ifconfig<br/># wpa_passphrase "ASUS_RISC_SOM_ESBC_2.4"&nbsp; 1qaz2wsx&nbsp;> /tmp/wpa.conf<br/>#wpa_supplicant -BDwext -iwlan0 -c/tmp/wpa.conf<br/># cat /tmp/wpa.conf<br/># udhcpc -b -i wlan0
 +
 
 +
Check wlan0 working or not<br/># ifconfig wlan0<br/># ping 8.8.8.8
 +
 
 +
==== For Debian 8&nbsp; ====
 +
 
 +
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# apt-get update&nbsp;<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# apt-get install network-manager-gnome
 +
 
 +
Check wlan0 existing or not<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# ifconfig wlan0 up
 +
 
 +
#ifconfig<br/># wpa_passphrase "ASUS_RISC_SOM_ESBC_2.4"&nbsp; 1qaz2wsx&nbsp;> /tmp/wpa.conf<br/>#wpa_supplicant -BDwext -iwlan0 -c/tmp/wpa.conf<br/># cat /tmp/wpa.conf<br/># dhclient wlan0
 +
 
 +
====  ====
 +
 
 +
=== EWM-W151H01E ===
 +
 
 +
=== EWM-W155H01E ===
 +
 
 +
=== EWM-W157H01E ===
 +
 
 +
Support WiFi and BT function on Yocto 2.1.
 +
 
 +
For Yocto 2.1&nbsp;
 +
 
 +
Check wlan0 existing or not<br/>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# ifconfig wlan0 up
 +
 
 +
#ifconfig<br/># wpa_passphrase "ASUS_RISC_SOM_ESBC_2.4"&nbsp; 1qaz2wsx&nbsp;> /tmp/wpa.conf<br/>#wpa_supplicant -BDwext -iwlan0 -c/tmp/wpa.conf<br/># cat /tmp/wpa.conf<br/># udhcpc -b -i wlan0
 +
 
 +
Check wlan0 working or not<br/># ifconfig wlan0<br/># ping 8.8.8.8
 +
 
 +
=== EWM-W163M201E ===
 +
 
 +
[[:File:EWM-W163M201E_porting_guide_on_DS100.docx|EWM-W163M201E_porting_guide_on_DS100.docx]]
 +
 
 +
=== EWM-W168 ===
 +
 
 +
[[:File:EWM-W168_rsb4411.pptx|EWM-W168_rsb4411.pptx]]
 +
 
 +
=== EWM-W170 ===
 +
 
 +
[[:File:EWM-W170_WIFI_porting_guide_for_imx6_Yocto2.5.docx|EWM-W170_WIFI_porting_guide_for_imx6.docx]]
 +
 
 +
[[:File:Qcacld-2.0-SparkLAN-4.5.25.33.tar.xz|EWM-W170_WIFI_Sparklan_Driver]]
 +
 
 +
=== EWM-W188 ===
 +
 
 +
[[:File:EWM-W188_Bluetooth_porting_guide_for_ds100-debian.docx|File:EWM-W188_Bluetooth_porting_guide_for_ds100-debian.docx]]
 +
 
 +
[[:File:EWM-W188_RSB4710_Android10.docx|File:EWM-W188_RSB4710_Android10.docx]]
 +
 
 +
=== AIW-W154 ===
 +
Yocto 3.0
 +
 
 +
[[:File:AIW154_WIFIBT_v2.docx|AIW154_WIFIBT_v2.docx]]
 +
 
 +
Yocto 3.3
 +
 
 +
[[:File:AIW154_WIFIBT_kernel_5_10.docx|AIW154_WIFIBT_kernel_5_10.docx]]
 +
 
 +
=== AIW-W165 ===
 +
 
 +
The AIW-W165 (Support OS is Yocto3.3)
 +
 
 +
WIFI Test Command
 +
 
 +
#modprobe moal mod_para=nxp/wifi_mod_para.conf
 +
 
 +
#iwconfig
 +
 
 +
#ifconfig mlan0 up
 +
#wpa_passphrase "XX" yy >/tmp/wpa.conf (XX is WIFI ESSID , yy is password)
 +
#ifconfig eth0 down
 +
#wpa_supplicant -d -B -imlan0 -c /tmp/wpa.conf -Dnl80211
 +
#udhcpc -imlan0
 +
 
 +
BT Test Command
 +
 
 +
#modprobe moal mod_para=nxp/wifi_mod_para.conf
 +
#hciattach /dev/ttymxc2 any 3000000 3000000 flow
 +
#hciconfig hci0 up
 +
#hcitool scan
 +
 
 +
== TOUCH ==
 +
 
 +
=== EETI_eGTouch ===
 +
 
 +
[[:File:EETI_Touch_porting_guide_on_Android_10.docx|File:EETI_Touch_porting_guide_on_Android_10.docx]]
 +
 
 +
== USB ==
 +
 
 +
=== EMIO-200U3 ===
 +
 
 +
Set CONFIG_USB_XHCI_HCD=y in kernel config
 +
 
 +
== ADC ==
 +
 
 +
=== USB-4702/4704 & USB-4761 ===
 +
 
 +
==== Driver Confirmation ====
 +
 
 +
1. Make sure the DAQ device driver has been loaded by the kernel
 +
 
 +
[[File:Lsmod 4704 1.png|400x500px|lsmod_4704_1.png]]
 +
 
 +
2. If login by normal user (not root user), you have to place '''drivers\driver_base\src\lnx_ko\71-bionic-daq.rules'''
 +
 
 +
to '''/etc/udev/rules.d/''' in Root File System
 +
 
 +
3. Make sure the DAQ driver has been successfully matched with the DAQ device.
 +
 
 +
[[File:Daq device.png|300x400px|daq_device.png]]
 +
 
 +
==== Change Device Description ====
 +
 
 +
To check deviceDescription
 +
 
 +
cat /sys/class/daq/daq0/desc
 +
 
 +
and change deviceDescription of your device in sample codes
 +
 
 +
example:
 +
 
 +
#define  deviceDescription  L"USB-4704,BID#0"
 +
 
 +
==== Compile sample code ====
 +
 
 +
First, download the package for specific platform, e.g. arm64-oecore or TI am335x.
 +
 
 +
[[:File:Linux_driver_source_3.2.10.6_arm64-oecore.zip|ZIP for arm64-oecore]]
 +
 
 +
[[:File:linux_driver_source_3.2.10.7_poky_2.1.1.tar.gz|ZIP for Poky2.1.1]]
 +
 
 +
[[:File:Linux_driver_source_3.2.13.1_-armv7ahf.zip|ZIP for TI am335x]]
 +
 
 +
These libraries in '''./libs''' are only for specific platform and have to be copied into '''/usr/lib/''' in Root File System
 +
 
 +
If you want to support on other platforms (ex: i.MX6 ...), please contact with Advantech.
 +
 
 +
*'''[RSB-4760]'''
 +
 
 +
Set-up arm64-oecore environment
 +
 
 +
source <span style="color:purple">'''[your cross-compiler path]'''</span>/environment-setup-aarch64-oe-linux
 +
 
 +
Compile sample code
 +
 
 +
<span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/x86_64-oesdk-linux/usr/bin/aarch64-oe-linux/aarch64-oe-linux-g++ -o <span style="color:purple">'''$Example_NAME'''</span> <span style="color:purple">'''$Example_NAME'''</span>.cpp \
 +
--sysroot=<span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/aarch64-oe-linux/ \
 +
-I <span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/aarch64-oe-linux/usr/include/ \
 +
-L <span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/aarch64-oe-linux/usr/lib/ \
 +
-L '''<span style="color:purple">[USB-4704 driver source path]</span>'''/libs \
 +
-lbiodaq
 +
 
 +
*'''[RSB-4220 / UBC-330]'''
 +
 
 +
Compile sample code
 +
 
 +
<span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-g++ -o <span style="color:purple">'''$Example_NAME'''</span> <span style="color:purple">'''$Example_NAME'''</span>.cpp \
 +
--sysroot=<span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/armv7ahf-neon-linux-gnueabi/ \
 +
-I <span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/armv7ahf-neon-linux-gnueabi/usr/include/ \
 +
-L <span style="color:purple">'''[your cross-compiler path]'''</span>/sysroots/armv7ahf-neon-linux-gnueabi/usr/lib/ \
 +
-L '''<span style="color:purple">[USB-4704 driver source path]</span>'''/libs \
 +
-lbiodaq
 +
 
 +
==== Example List ====
 +
 
 +
For simple test, you can use AO_StaticAO to see if the output voltage of AO0 changes automatically.
 +
 
 +
*'''For USB-4702/4704'''
 +
 
 +
[[File:Usb-4704.png|800x1000px|usb-4704_1.png]]
 +
 
 +
*'''For USB-4761'''
 +
 
 +
[[File:Usb-4761.png|800x1000px|usb-4761_1.png]]
 +
<div id="gtx-trans" style="position: absolute; left: 732px; top: 12061px;"><div class="gtx-trans-icon"></div></div>

Latest revision as of 11:21, 13 June 2023

3G

EWM-C106FT01E

pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' user username password password /dev/ttyUSB2 460800 nodetach crtscts debug usepeerdns defaultroute &

EWM-C109FT01E

pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' user username password password /dev/ttyUSB3 460800 nodetach crtscts debug usepeerdns defaultroute &

Sierra AirPrime MC8090

The following operations are performed with UBC-221 using U221LBV1050.

  • linux kernel config
set the following lines to meta-advantech/recipes-kernel/linux/linux-yocto-clanton/advantech.cfg
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
add the following line to meta-advantech/recipes-kernel/advantech-init/files/advantech.conf
sierra
execute the following command
$ bitbake advantech-init
  • rebuild the kernel
$ bitbake linux-yocto-clanton
  • rebuild the full image
$ bitbake image-full
  • practical test on target board
# pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' \
user username password password /dev/ttyUSB3 460800 nodetach crtscts debug usepeerdns defaultroute &
Sierra AirPrime MC8090 connecting.png
# ifconfig
Sierra AirPrime MC8090 ifconfig.png
# ping -c5 8.8.8.8
Sierra AirPrime MC8090 ping.png

Telit HE910-D

The following operations are performed with UBC-221 using U221LBV1050.

  • practical test on target board
# modprobe cdc-acm
Telit HE910-D modprobe.png
# dmesg | grep ttyACM
Telit HE910-D dmesg.png
# pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' \
user username password password /dev/ttyACM0 460800 nodetach crtscts debug usepeerdns defaultroute &
# pinc -c5 8.8.8.8
RTENOTITLE RTENOTITLE

Quectel UC20

3G module Porting (QUECTEL UC20)

In linux kernel

1. You need to add the mechanism for processing zero packets during transmission of “usb_wwan.c” file under “[KERNEL]/drivers/usb/serial”.

You need to add the following statements to the “usb_wwan_write” and “usb_wwan_setup_urb” function, as shown below:

…
#include "usb-wwan.h"

+ #ifdef CONFIG_ARCH_ADVANTECH
+ #define HW_bcdUSB 0x0110
+ #define HUAWEI_VENDOR_ID 0x12d1
+ #endif

void usb_wwan_dtr_rts(struct usb_serial_port *port, int on)
…
…
…

int usb_wwan_write(struct tty_struct *tty, struct usb_serial_port *port,
		   const unsigned char *buf, int count)
{
…
…
	int left, todo;
	struct urb *this_urb = NULL;	/* spurious */
+ #ifdef CONFIG_ARCH_ADVANTECH
+ 	 struct usb_host_endpoint *ep=NULL;
+ #endif
	int err;
	unsigned long flags;
…
…
…
	/* send the data */
	memcpy(this_urb->transfer_buffer, buf, todo);
	this_urb->transfer_buffer_length = todo;

+ #ifdef CONFIG_ARCH_ADVANTECH  
+   if (IS_RSB_6410)
+   {
+       if((HUAWEI_VENDOR_ID == port->serial->dev->descriptor.idVendor)
+       	&& (HW_bcdUSB != port->serial->dev->descriptor.bcdUSB)){
+       	ep = usb_pipe_endpoint(this_urb->dev, this_urb->pipe);
+       	if(ep && (0 != this_urb->transfer_buffer_length)
+       		&& (0 == this_urb->transfer_buffer_length %
+       		ep->desc.wMaxPacketSize)){
+       		this_urb->transfer_flags |= URB_ZERO_PACKET;
+       	}
+       }
+   }
+ #endif

		spin_lock_irqsave(&intfdata->susp_lock, flags);
		if (intfdata->suspended) {
			usb_anchor_urb(this_urb, &portdata->delayed);
…
…
…
}
…
…
…
/* Helper functions used by usb_wwan_setup_urbs */
static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
				      int endpoint,
				      int dir, void *ctx, char *buf, int len,
				      void (*callback) (struct urb *))
{
	struct usb_serial *serial = port->serial;
	struct urb *urb;

	urb = usb_alloc_urb(0, GFP_KERNEL);	/* No ISO */
	if (!urb)
		return NULL;

	/* Fill URB using supplied data. */
	usb_fill_bulk_urb(urb, serial->dev,
			  usb_sndbulkpipe(serial->dev, endpoint) | dir,
			  buf, len, callback, ctx);

+ #ifdef CONFIG_ARCH_ADVANTECH
+     	if (dir == USB_DIR_OUT) {
+     		struct usb_device_descriptor *desc = &serial->dev->descriptor;
+     		if (desc->idVendor == 0x05C6 && (desc->idProduct == 0x9003 || desc->idProduct ==
+     			0x9090 || desc->idProduct == 0x9215))
+     			urb->transfer_flags |= URB_ZERO_PACKET;
+     	}
+ #endif
	return urb;
}

2. Add UC15/UC20/EC20's Vendor ID and Product ID in "option_ids[]" in the file "drivers/usb/serial/option.c":

static const struct usb_device_id option_ids[] = {
…
+	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9090) }, //for Quectel UC15
+	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9003) }, //for Quectel UC20
+	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9215) }, //for Quectel EC20
…
}

4G

Telit LE910C4

For Yocto 2.5 and later

We have to enable CONFIG_USB_SERIAL_OPTION=y

Using command as below to connect

Setup APN

echo -e "AT+CGDCONT=2,\"ip\",\"internet\"\r\n" >/dev/ttyUSB2

Connect

pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99***2#" "CONNECT" ""' user username password password /dev/ttyUSB2 460800 nodetach crtscts debug usepeerdns defaultroute &

For EPC-R7200

File:Telit_le910c4_on_EPCR7200.pdf

Sierra AirPrime MC7304

For Yocto 1.8

We have to enable CONFIG_USB_SERIAL_QUALCOMM=m

For Yocto 2.0 and later

We have to enable CONFIG_USB_SERIAL_OPTION=y


Using command as below to connect
pppd connect 'chat -v -s -t 10 "" "AT" "" "ATDT*99#" "CONNECT" ""' user username password password /dev/ttyUSB2 460800 nodetach crtscts debug usepeerdns defaultroute &

Sierra AirPrime MC7430

Modify drivers/usb/serial/option.c

--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -1123,6 +1123,8 @@ static const struct usb_device_id option_ids[] = {
        { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */
        { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x68c0, 0xff),
          .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC73xx */
+       { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x9071, 0xff),
+         .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC7430 */
        { USB_DEVICE_INTERFACE_CLASS(SIERRA_VENDOR_ID, 0x9041, 0xff),
          .driver_info = (kernel_ulong_File:4G_rndis.zip)&sierra_mc73xx_blacklist }, /* MC7305/MC7355 */
        { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },

Sierra AirPrime EM7565

Verified on RSB-4760 (Qualcomm db410c)

Drivers in Yocto 2.1

Script for data connection

AM Telecom AMM561KT

The following operations are performed with UBC-222(U222LBV2011).

  • linux kernel config


Device Drivers --->
[*] USB support --->
<M> Support for Host-side USB
[*] Network device support --->
USB Network Adapters --->
<M> Multi-purpose USB Networking Framework
<M> Host for RNDIS and ActiveSync devices (EXPERIMENTAL)


  • load drivers
# rmmod usbserial
# modprobe rndis_host
# modprobe usbserial vendor=0x1ECB product=0x0205

e.g. put the 3 lines to /etc/rc.local
AMM561KT load drivers.png

  • list usb devices
# lsusb
# ll /dev/ttyUSB[012]

AMM561KT list usb devices.png

Fibocom NL668

EWM-C145

EWM-C117

Default RNDIS Mode

Use the script to connect to internet

File:4G_rndis.zip

Change to normal mode

File:module-ewm-117-for-ppp.zip

Connect to internet by pppd demand

File:4G_ppp.zip

Reference from AE Phill

File:RSB-4220_EWM-C117.docx

:File:EWM-C117 RSB-4760 internaluse.docx

Made from RD

File:EWM-C117_for_RK3399_ds100.docx

Bluetooth

EWM-W155H01E

Please refer to Bluetooth Testing Guide for Quark Platform for all operations performed using UBC-222 with U222LBV2011.

AW-CB178NF

Porting AzureWave Wifi BT module

1. Add compile option ins arch/arm/configs/imx_v7_adv_deconfig

… 
CONFIG_BT_HIDP=y 
CONFIG_BT_HCIBTUSB=y 
CONFIG_BT_HCIVHCI=y 
+ CONFIG_BT_MRVL=m 
+ CONFIG_BT_MRVL_SDIO=m 
CONFIG_BT_ATH3K=m 
CONFIG_CFG80211=m 
CONFIG_CFG80211_WEXT=y 
… 
… 
CONFIG_USB_NET_RNDIS_HOST=y CONFIG_USB_NET_CDC_SUBSET=m 
CONFIG_USB_NET_ZAURUS=m 
+ CONFIG_LIBERTAS_THINFIRM=m 
CONFIG_ATH_CARDS=m 
CONFIG_ATH9K=m 
CONFIG_ATH9K_LEGACY_RATE_CONTROL=y 
… 
CONFIG_RT2800USB_RT55XX=y 
CONFIG_RT2800USB_UNKNOWN=y 
CONFIG_RTL8188EE=m 
+ CONFIG_MWIFIEX=m 
+ CONFIG_MWIFIEX_SDIO=m 
CONFIG_INPUT_POLLDEV=y
#CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_EVDEV=y …

2. Modify in arch/arm/boot/dts/imx6qdl-advantech.dtsi

...
usdhc1 {
		pinctrl_usdhc1_1: usdhc1grp-1 {
			fsl,pins = <
				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
			>;
		};
	};
...

3. add in arch/arm/boot/dts/imx6q-[board].dts

...
&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog_1 &pinctrl_hog_2>;

	hog {
		pinctrl_hog_1: hoggrp-1 {
                        fsl,pins = <
                                MX6QDL_PAD_SD3_DAT4__GPIO7_IO01         0x80000000      /* SD3_CD */
                                MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x80000000      /* SD3_WP */
                                MX6QDL_PAD_SD2_CMD__GPIO1_IO11         	0x80000000      /* SDIO RST */
                                MX6QDL_PAD_SD2_CLK__GPIO1_IO10         	0x80000000      /* SDIO WAKE */
+                               MX6QDL_PAD_NANDF_D7__GPIO2_IO07        	0x80000000      /* M.2 WLAN OFF */
+                               MX6QDL_PAD_NANDF_D1__GPIO2_IO01        	0x80000000      /* M.2 BT OFF */
                                MX6QDL_PAD_GPIO_0__CCM_CLKO1            0x130b0     /* AUDIO CLK */
                        >;
                };
...

Testing Operations

hciconfig hci0 up
hcitool dev | grep hci
hcitool scan

RTENOTITLE

WiFi

EWM-W142F01E

For Yocto 1.8 

Check wlan0 existing or not
           # ifconfig wlan0 up

  1. ifconfig
    # wpa_passphrase "ASUS_RISC_SOM_ESBC_2.4"  1qaz2wsx > /tmp/wpa.conf
    #wpa_supplicant -BDwext -iwlan0 -c/tmp/wpa.conf
    # cat /tmp/wpa.conf
    # udhcpc -b -i wlan0

Check wlan0 working or not
# ifconfig wlan0
# ping 8.8.8.8

For Debian 8 

           # apt-get update 
           # apt-get install network-manager-gnome

Check wlan0 existing or not
           # ifconfig wlan0 up

  1. ifconfig
    # wpa_passphrase "ASUS_RISC_SOM_ESBC_2.4"  1qaz2wsx > /tmp/wpa.conf
    #wpa_supplicant -BDwext -iwlan0 -c/tmp/wpa.conf
    # cat /tmp/wpa.conf
    # dhclient wlan0

EWM-W151H01E

EWM-W155H01E

EWM-W157H01E

Support WiFi and BT function on Yocto 2.1.

For Yocto 2.1 

Check wlan0 existing or not
           # ifconfig wlan0 up

  1. ifconfig
    # wpa_passphrase "ASUS_RISC_SOM_ESBC_2.4"  1qaz2wsx > /tmp/wpa.conf
    #wpa_supplicant -BDwext -iwlan0 -c/tmp/wpa.conf
    # cat /tmp/wpa.conf
    # udhcpc -b -i wlan0

Check wlan0 working or not
# ifconfig wlan0
# ping 8.8.8.8

EWM-W163M201E

EWM-W163M201E_porting_guide_on_DS100.docx

EWM-W168

EWM-W168_rsb4411.pptx

EWM-W170

EWM-W170_WIFI_porting_guide_for_imx6.docx

EWM-W170_WIFI_Sparklan_Driver

EWM-W188

File:EWM-W188_Bluetooth_porting_guide_for_ds100-debian.docx

File:EWM-W188_RSB4710_Android10.docx

AIW-W154

Yocto 3.0

AIW154_WIFIBT_v2.docx

Yocto 3.3

AIW154_WIFIBT_kernel_5_10.docx

AIW-W165

The AIW-W165 (Support OS is Yocto3.3)

WIFI Test Command

  1. modprobe moal mod_para=nxp/wifi_mod_para.conf
  1. iwconfig
  1. ifconfig mlan0 up
  2. wpa_passphrase "XX" yy >/tmp/wpa.conf (XX is WIFI ESSID , yy is password)
  3. ifconfig eth0 down
  4. wpa_supplicant -d -B -imlan0 -c /tmp/wpa.conf -Dnl80211
  5. udhcpc -imlan0

BT Test Command

  1. modprobe moal mod_para=nxp/wifi_mod_para.conf
  2. hciattach /dev/ttymxc2 any 3000000 3000000 flow
  3. hciconfig hci0 up
  4. hcitool scan

TOUCH

EETI_eGTouch

File:EETI_Touch_porting_guide_on_Android_10.docx

USB

EMIO-200U3

Set CONFIG_USB_XHCI_HCD=y in kernel config

ADC

USB-4702/4704 & USB-4761

Driver Confirmation

1. Make sure the DAQ device driver has been loaded by the kernel

lsmod_4704_1.png

2. If login by normal user (not root user), you have to place drivers\driver_base\src\lnx_ko\71-bionic-daq.rules

to /etc/udev/rules.d/ in Root File System

3. Make sure the DAQ driver has been successfully matched with the DAQ device.

daq_device.png

Change Device Description

To check deviceDescription

cat /sys/class/daq/daq0/desc

and change deviceDescription of your device in sample codes

example:

#define  deviceDescription  L"USB-4704,BID#0"

Compile sample code

First, download the package for specific platform, e.g. arm64-oecore or TI am335x.

ZIP for arm64-oecore

ZIP for Poky2.1.1

ZIP for TI am335x

These libraries in ./libs are only for specific platform and have to be copied into /usr/lib/ in Root File System

If you want to support on other platforms (ex: i.MX6 ...), please contact with Advantech.

  • [RSB-4760]

Set-up arm64-oecore environment

source [your cross-compiler path]/environment-setup-aarch64-oe-linux

Compile sample code

[your cross-compiler path]/sysroots/x86_64-oesdk-linux/usr/bin/aarch64-oe-linux/aarch64-oe-linux-g++ -o $Example_NAME $Example_NAME.cpp \
--sysroot=[your cross-compiler path]/sysroots/aarch64-oe-linux/ \
-I [your cross-compiler path]/sysroots/aarch64-oe-linux/usr/include/ \
-L [your cross-compiler path]/sysroots/aarch64-oe-linux/usr/lib/ \
-L [USB-4704 driver source path]/libs \
-lbiodaq
  • [RSB-4220 / UBC-330]

Compile sample code

[your cross-compiler path]/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf-g++ -o $Example_NAME $Example_NAME.cpp \
--sysroot=[your cross-compiler path]/sysroots/armv7ahf-neon-linux-gnueabi/ \
-I [your cross-compiler path]/sysroots/armv7ahf-neon-linux-gnueabi/usr/include/ \
-L [your cross-compiler path]/sysroots/armv7ahf-neon-linux-gnueabi/usr/lib/ \
-L [USB-4704 driver source path]/libs \
-lbiodaq

Example List

For simple test, you can use AO_StaticAO to see if the output voltage of AO0 changes automatically.

  • For USB-4702/4704
usb-4704_1.png
  • For USB-4761
usb-4761_1.png