CDC_ETHER in Debian 3.8.13-bone70

Hi,

I am working with a cellular module that requires the linux kernel to have support for theCDC_ETHER USB device class.

My current kernel version is 3.8.13 (Debian Wheezy verion 7) (I know, its old… but too much invested to change right now).

I believe CDC_ETHER is not supported but I do not know how to tell.

How do I go about patching this into the kernel?

Thanks in advance

CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_CDC_EEM=m
CONFIG_USB_NET_CDC_NCM=y
CONFIG_USB_NET_CDC_MBIM=m

https://github.com/beagleboard/linux/blob/dc982e80db34b0448c91ae1597ef38a3f4a95e35/arch/arm/configs/bb.org_defconfig#L1739-L1742

Is that requirement documentation public?

Regards,

Hi RC,

I’ll check if it is.

Looking at your reply does this mean that CDCETHER is enabled in my kernel version (assuming you are saying it is in there as I see =y)? Is CDC_ETHER and CDCETHER the same thing?
If it is, why would I not see the device?

The document for the module I am looking claims that it will simply appear when connected on boot in Debian 8.3 (kernel 4.1.15) but is not supported in Debian 7.x (kernel 3.8.x)

Sounds more like, this device's vid/pid has been added to at-least v4.1.15,
thus it works out of the box..

git checkout both kernel's and use meld to compare the two drivers.. it's
probally just a vid/pid addition..

Regards,

Sorry for the hand holding but what files am I comparing?

Well, for "cellular module"...

./drivers/net/usb/

Regards,

So I check out each kernel with

git checkout origin/am33x-v4.1 -b tmp_v4.1

Then how do I find the file? Again sorry for the hand holding…

Ok so I built 4.1 with ./build_kernel.sh and now I see the file for the 4.1 kernel

Am I looking in the cdc_ether.c file for my specific device?

We have no idea... "cellular module"... you need to be more verbose...

Regards,

Hi RC,

Sorry for the limited information. Just got word the document I am working with is public (attached)

The device I am working with is a Skywire LTE CAT1 Module (Gemalto ELS35).

Here is what the helpful support is telling me:

CAT1BBBCDC-ECM.pdf (204 KB)

That's the root hub: http://www.linux-usb.org/usb.ids

1d6b Linux Foundation

  0001 1.1 root hub
  0002 2.0 root hub
  0003 3.0 root hub
  0100 PTP Gadget
  0101 Audio Gadget
  0102 EEM Gadget
  0103 NCM (Ethernet) Gadget
  0104 Multifunction Composite Gadget
  0105 FunctionFS Gadget
  0200 Qemu Audio Device

run "lsusb" again. :wink:

Regards,

Ok I see it now with lsusb:

lsusb
Bus 001 Device 004: ID 1e2d:00a0
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

And in my dmesg log I see it registering:

dmesg |grep cdc_ether
[ 0.709427] usbcore: registered new interface driver cdc_ether
[ 1.859965] cdc_ether 1-1:1.0: usb_probe_interface
[ 1.859981] cdc_ether 1-1:1.0: usb_probe_interface - got id
[ 1.885585] cdc_ether 1-1:1.0 usb0: register ‘cdc_ether’ at usb-musb-hdrc.1.auto-1, CDC Ethernet Device, 02:80:70:00:04:70

What am I missing to establish the Ethernet over USB connection?

Still working on this and really not sure what my next step is.

When I plug the module into both my old device running 3.8 and now a new device (just compiled 4.1.21-bone-rt-r20) I do am not getting a connection. Tailing the syslog it gets up the poingt of declaring it ttyACM0: USB ACM device but then nothing happens:

[12990.725461] cdc_ether 1-1:1.0 usb0: unregister ‘cdc_ether’ usb-musb-hdrc.1.auto-1, CDC Ethernet Device
Apr 20 21:28:05 arm kernel: [12990.719975] usb 1-1: USB disconnect, device number 4
Apr 20 21:28:05 arm kernel: [12990.725461] cdc_ether 1-1:1.0 usb0: unregister ‘cdc_ether’ usb-musb-hdrc.1.auto-1, CDC Ethernet Device
[12993.532521] usb 1-1: new high-speed USB device number 6 using musb-hdrc
Apr 20 21:28:08 arm kernel: [12993.532521] usb 1-1: new high-speed USB device number 6 using musb-hdrc
[12993.823315] usb 1-1: New USB device found, idVendor=1e2d, idProduct=00a0
[12993.830122] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[12993.837381] usb 1-1: Product: SQN
[12993.840731] usb 1-1: Manufacturer: Sequans Communications
[12993.846221] usb 1-1: SerialNumber: 700400708002
Apr 20 21:28:08 arm kernel: [12993.823315] usb 1-1: New USB device found, idVendor=1e2d, idProduct=00a0
Apr 20 21:28:08 arm kernel: [12993.830122] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 20 21:28:08 arm kernel: [12993.837381] usb 1-1: Product: SQN
Apr 20 21:28:08 arm kernel: [12993.840731] usb 1-1: Manufacturer: Sequans Communications
Apr 20 21:28:08 arm kernel: [12993.846221] usb 1-1: SerialNumber: 700400708002
[12993.922298] cdc_ether 1-1:1.0 usb0: register ‘cdc_ether’ at usb-musb-hdrc.1.auto-1, CDC Ethernet Device, 02:80:70:00:04:70
[12993.942669] cdc_acm 1-1:1.2: ttyACM0: USB ACM device

I have also now taken this module and plugged it hot into my dev desktop computer running ubuntu ( 3.16.0-70-generic #90~14.04.1-Ubuntu ) and it just fires up all the way! Auto detects and I instantly have an established connection thru the module.

I attached my syslog from when I did this and you see much more going on after ~ line 11 where we have the same ttyACM0: USB ACM device.

syslogPluggedIntoAquaUbuntu (11.7 KB)

Do you know how a cdc_ether device works ? Because according to the text you’ve got there, and the output from dmesg, you should be able to run sudo ifconfig, and see it listed.

On the desktop, it's the network-manager that's usually doing the auto
configuration behind the scenes..

Regards,

So how do I get the BBB to take the reins and do configure this bad boy!?

pppd

https://wiki.archlinux.org/index.php/3G_and_GPRS_modems_with_pppd

Regards,

PPP currently not supported the modem MFR. Hopefully a firmware update coming soon. In the meantime they have pointed me at cdc_ether.

What output do you get from:

$ ls /sys/class/net

?

ls /sys/class/net/
eth0 lo usb0 usb1

usb0 is usb connection to from host dev machine to BBB
USB1 is the module