Difference between revisions of "IoTGateway/Features/Linux/Module"
Weichih.lin (talk | contribs) |
Weichih.lin (talk | contribs) |
||
Line 1: | Line 1: | ||
− | + | {{DISPLAYTITLE:Linux Module Features}}fckLR{{DISPLAYTITLE:Android Module Features}}fckLR | |
+ | |||
== 3G == | == 3G == | ||
Line 160: | Line 161: | ||
</pre> | </pre> | ||
− | ==4G== | + | == 4G == |
− | ===AM Telecom AMM561KT=== | + | |
+ | === AM Telecom AMM561KT === | ||
+ | |||
The following operations are performed with UBC-222(U222LBV2011). | The following operations are performed with UBC-222(U222LBV2011). | ||
− | * linux kernel config | + | |
− | <tt><small> | + | *linux kernel config |
− | + | ||
− | :::[*] USB support | + | |
− | ::::<span style="color:red">''' | + | |
− | :::[*] Network device support | + | ::<tt><small>Device Drivers ---></small></tt> |
− | ::::USB Network Adapters | + | :::<tt><small>[*] USB support ---></small></tt> |
− | :::::<M | + | ::::<tt><small><span style="color:red">'''<M> Support for Host-side USB'''</span></small></tt> |
− | :::::<M | + | :::<tt><small>[*] Network device support ---></small></tt> |
− | </small> | + | ::::<tt><small>USB Network Adapters ---></small></tt> |
− | </tt> | + | :::::<tt><small><M> Multi-purpose USB Networking Framework</small></tt> |
− | * load drivers | + | :::::<tt><small><M> Host for RNDIS and ActiveSync devices (EXPERIMENTAL)</small></tt> |
+ | |||
+ | |||
+ | |||
+ | *load drivers | ||
<div style="margin-left: 2em;"> | <div style="margin-left: 2em;"> | ||
# rmmod usbserial | # rmmod usbserial | ||
Line 180: | Line 187: | ||
# modprobe usbserial vendor=0x1ECB product=0x0205 | # modprobe usbserial vendor=0x1ECB product=0x0205 | ||
− | e.g. put the 3 lines to /etc/rc.local<br> | + | e.g. put the 3 lines to /etc/rc.local<br/>[[File:AMM561KT load drivers.png|720px|AMM561KT load drivers.png]] |
− | [[File: | ||
</div> | </div> | ||
− | * list usb devices | + | *list usb devices |
<div style="margin-left: 2em;"> | <div style="margin-left: 2em;"> | ||
# lsusb | # lsusb | ||
# ll /dev/ttyUSB[012] | # ll /dev/ttyUSB[012] | ||
− | [[File: | + | [[File:AMM561KT list usb devices.png|600px|AMM561KT list usb devices.png]] |
</div> | </div> | ||
− | |||
== Bluetooth == | == Bluetooth == | ||
Line 199: | Line 204: | ||
=== AW-CB178NF === | === AW-CB178NF === | ||
− | === Porting AzureWave Wifi BT module === | + | ==== Porting AzureWave Wifi BT module ==== |
1. Add compile option ins arch/arm/configs/imx_v7_adv_deconfig | 1. Add compile option ins arch/arm/configs/imx_v7_adv_deconfig | ||
Line 268: | Line 273: | ||
</pre> | </pre> | ||
− | === Testing Operations === | + | ==== Testing Operations ==== |
<pre>hciconfig hci0 up | <pre>hciconfig hci0 up | ||
hcitool dev | grep hci | hcitool dev | grep hci | ||
Line 274: | Line 279: | ||
</pre> | </pre> | ||
− | ==WiFi== | + | == WiFi == |
− | ===EWM-W142F01E=== | + | |
− | ===EWM-W151H01E=== | + | === EWM-W142F01E === |
− | ===EWM-W155H01E=== | + | |
+ | === EWM-W151H01E === | ||
+ | |||
+ | === EWM-W155H01E === | ||
+ | |||
+ | == USB == | ||
+ | |||
+ | === EMIO-200U3 === | ||
− | |||
− | |||
Set CONFIG_USB_XHCI_HCD=y in kernel config | Set CONFIG_USB_XHCI_HCD=y in kernel config |
Revision as of 09:49, 2 November 2016
fckLRWarning: Display title "Android Module Features" overrides earlier display title "Linux Module Features".fckLR
Contents
3G
EWM-C106FT01E
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 &
# ifconfig
# pinc -c5 8.8.8.8
Telit HE910-D
The following operations are performed with UBC-221 using U221LBV1050.
- practical test on target board
# modprobe cdc-acm
# dmesg | grep ttyACM
# 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
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
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)
- USB Network Adapters --->
- [*] USB support --->
- Device Drivers --->
- load drivers
# rmmod usbserial # modprobe rndis_host # modprobe usbserial vendor=0x1ECB product=0x0205
- list usb devices
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 | grep [Scanning MAC of the Device]
WiFi
EWM-W142F01E
EWM-W151H01E
EWM-W155H01E
USB
EMIO-200U3
Set CONFIG_USB_XHCI_HCD=y in kernel config