Page 1 of 1
Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 01 Aug 2015, 18:04
by beeloo
Hi everyone,
I'm looking for a solution to get this module working on pfSense 2.2.4 which is based on FreeBSD 10.1:
Code: Select all
[2.2.4-RELEASE][admin@pfSense]/root: uname -a
FreeBSD pfSense 10.1-RELEASE-p15 FreeBSD 10.1-RELEASE-p15 #0 c5ab052(releng/10.1)-dirty: Sat Jul 25 20:20:58 CDT 2015 root@pfs22-amd64-builder:/usr/obj.amd64/usr/pfSensesrc/src/sys/pfSense_SMP.10 amd64
[2.2.4-RELEASE][admin@pfSense]/root:
I tried the following config file:
Code: Select all
[2.2.4-RELEASE][admin@pfSense]/root: cat 12d1:1573
DefaultVendor= 0x12d1
DefaultProduct= 0x1573
TargetVendor= 0x12d1
TargetProductList= "1001,1406,140b,140c,1412,141b,1433,14ac"
CheckSuccess=20
HuaweiNewMode=1
NeedResponse=0
MessageEndpoint = 0x05
MessageContent = "55534243123456780000000000000011062000000100000000000000000000"
[2.2.4-RELEASE][admin@pfSense]/root:
Here is the result:
Code: Select all
[2.2.4-RELEASE][admin@pfSense]/root: usb_modeswitch -c 12d1:1573
Look for target devices ...
No devices in target mode or class found
Look for default devices ...
product ID matched
Found devices in default mode (1)
Access device 002 on bus 001
Current configuration number is 1
Use interface number 0
Error: response endpoint not given or found. Abort
[2.2.4-RELEASE][admin@pfSense]/root:
As you can see, it's not working...
I'm using usb_modeswitch 2.2.0:
Code: Select all
[2.2.4-RELEASE][admin@pfSense]/root: usb_modeswitch --version
* usb_modeswitch: handle USB devices with multiple modes
* Version 2.2.0 (C) Josua Dietze 2014
* Based on libusb1/libusbx
! PLEASE REPORT NEW CONFIGURATIONS !
[2.2.4-RELEASE][admin@pfSense]/root:
Just for information, here is the dmesg on Ubuntu 15.04
@ubuntu:~$ dmesg | grep -i "usb 1-2"
[ 3.029495] usb 1-2: new high-speed USB device number 2 using ehci-pci
[ 3.189951] usb 1-2: New USB device found, idVendor=12d1, idProduct=1573
[ 3.196715] usb 1-2: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[ 3.203884] usb 1-2: Product: HUAWEI Mobile
[ 3.208093] usb 1-2: Manufacturer: HUAWEI Technology
[ 3.213084] usb 1-2: SerialNumber: 0123456789ABCDEF
[ 10.286304] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[ 10.286800] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[ 10.290253] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[ 10.290622] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
@ubuntu:~$
Any advise please ?
Thank you in advance
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 01 Aug 2015, 19:09
by beeloo
I forgot to give you the dmesg informations about the Huawei:
Code: Select all
ugen1.2: <HUAWEI Technology> at usbus1
cdce0: <CDC Ethernet Control Model ECM> on usbus1
ue0: <USB Ethernet> on cdce0
ue0: Ethernet address: 00:xx:xx:xx:xx:xx
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 01 Aug 2015, 22:28
by Josh
What happens if you remove the "MessageEndpoint" line entirely?
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 01 Aug 2015, 23:28
by beeloo
Here is the result:
Code: Select all
[2.2.4-RELEASE][admin@pfSense]/root: cat 12d1:1573
DefaultVendor= 0x12d1
DefaultProduct= 0x1573
TargetVendor= 0x12d1
TargetProductList= "1001,1406,140b,140c,1412,141b,1433,14ac"
CheckSuccess=20
HuaweiNewMode=1
NeedResponse=0
MessageContent = "55534243123456780000000000000011062000000100000000000000000000"
[2.2.4-RELEASE][admin@pfSense]/root: usb_modeswitch -c 12d1:1573
Look for target devices ...
No devices in target mode or class found
Look for default devices ...
product ID matched
Found devices in default mode (1)
Access device 002 on bus 001
Current configuration number is 1
Use interface number 0
Error: message endpoint not given or found. Abort
[2.2.4-RELEASE][admin@pfSense]/root:
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 02 Aug 2015, 00:45
by beeloo
Actually, ue0, an Ethernet interface is appearing on FreeBSD:
Code: Select all
umass0: <Generic Flash Card ReaderWriter, class 0/0, rev 2.01/1.00, addr 2> on usbus6
ugen1.2: <HUAWEI Technology> at usbus1
cdce0: <CDC Ethernet Control Model ECM> on usbus1
ue0: <USB Ethernet> on cdce0
ue0: Ethernet address: 00:1e:10:1f:00:00
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 02 Aug 2015, 00:48
by Josh
It may be that the libusb version on your system does not allow to determine the endpoints of an interface ...
Do you have the "lsusb" command? If yes, run "lsusb -v -d 12d1:1573" and post the output.
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 02 Aug 2015, 00:49
by beeloo
Here it is:
Code: Select all
[2.2.4-RELEASE][admin@pfSense]/root: lsusb -v -d 12d1:1573
Bus /dev/usb Device /dev/ugen1.2: ID 12d1:1573 Huawei Technologies Co., Ltd.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 254 Application Specific Interface
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x12d1 Huawei Technologies Co., Ltd.
idProduct 0x1573
bcdDevice 2.28
iManufacturer 2 HUAWEI Technology
iProduct 3 HUAWEI Mobile
iSerial 4 0123456789ABCDEF
bNumConfigurations 2
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 250
bNumInterfaces 6
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 6 Ethernet Networking
bInterfaceProtocol 0
iInterface 5 CDC Ethernet Control Model (ECM)
CDC Header:
bcdCDC 1.10
CDC Union:
bMasterInterface 0
bSlaveInterface 1
CDC Ethernet:
iMacAddress 7 001E101F0000
bmEthernetStatistics 0x00000000
wMaxSegmentSize 1514
wNumberMCFilters 0x0000
bNumberPowerFilters 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 9
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 6 CDC Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 1
iInterface 49 HUAWEI Mobile Connect - Modem
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 3
iInterface 51 HUAWEI Mobile Connect - Application Interface
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 2
iInterface 50 HUAWEI Mobile Connect - PC UI Interface
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x87 EP 7 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 5
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 5
iInterface 77 HUAWEI Mobile Connect - GPS Interface
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x89 EP 9 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x88 EP 8 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 131
bNumInterfaces 3
bConfigurationValue 2
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 2 Communications
bFunctionSubClass 14
bFunctionProtocol 0
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 14
bInterfaceProtocol 0
iInterface 56 HUAWEI Mobile Broadband Module
CDC Header:
bcdCDC 1.10
UNRECOGNIZED CDC: 0c 24 1b 00 01 00 10 10 80 dc 05 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 9
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 2
iInterface 10 MBIM Data
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 2
iInterface 10 MBIM Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 1
bInterfaceProtocol 5
iInterface 77 HUAWEI Mobile Connect - GPS Interface
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 06 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 9
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 254 Application Specific Interface
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 2
can't get debug descriptor: Input/output error
Device Status: 0x0000
(Bus Powered)
[2.2.4-RELEASE][admin@pfSense]/root:
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 02 Aug 2015, 01:49
by LOM
This module does not have an install mode so doesn't need modeswitching.
The module has 2 configurations to choose between, config #1 has usb interfaces for dial-up modem (ppp) , direct ethernet adapter (cdc_ether), and gps/gnss.
Config #2 has usb interfaces for direct ethernet adapter (cdc_mbim) and gps/gnss.
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 02 Aug 2015, 11:30
by beeloo
LOM wrote:This module does not have an install mode so doesn't need modeswitching.
The module has 2 configurations to choose between, config #1 has usb interfaces for dial-up modem (ppp) , direct ethernet adapter (cdc_ether), and gps/gnss.
Config #2 has usb interfaces for direct ethernet adapter (cdc_mbim) and gps/gnss.
Alright.
I cannot find any other serial port than my APU1D's mother board ports.
Code: Select all
[2.2.4-RELEASE][root@pfSense]/root: ls /dev/
acpi ada0s1 bpf cuau0.init devctl gpioapu label null pts stdout ttyu1.init ugen0.1 ugen5.1 xpt0
ad4 ada0s1a bpf0 cuau0.lock devstat io md0 pass0 random sysmouse ttyu1.lock ugen1.1 ugen6.1 zero
ad4s1 ada0s1b console cuau1 dumpdev kbd0 mdctl pass1 sndstat ttyu0 tun1 ugen1.2 ugen6.2
ad4s1a apm crypto cuau1.init fd kbdmux0 mem pci speaker ttyu0.init tun2 ugen2.1 urandom
ad4s1b apmctl ctty cuau1.lock fido klog midistat pf stderr ttyu0.lock ufsid ugen3.1 usb
ada0 audit cuau0 da0 geom.ctl kmem nfslock ptmx stdin ttyu1 ufssuspend ugen4.1 usbctl
[2.2.4-RELEASE][root@pfSense]/root::
Do you have any idea on how to switch between configurations ?
Thank you
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 02 Aug 2015, 13:07
by LOM
beeloo wrote:LOM wrote:This module does not have an install mode so doesn't need modeswitching.
The module has 2 configurations to choose between, config #1 has usb interfaces for dial-up modem (ppp) , direct ethernet adapter (cdc_ether), and gps/gnss.
Config #2 has usb interfaces for direct ethernet adapter (cdc_mbim) and gps/gnss.
Alright.
I cannot find any other serial port than my APU1D's mother board ports.
You need to load a serial driver with support for the modules usb id and its interface attributes (Class, SubClass, Protocol) in order to get serial port devices in your system.
beeloo wrote:
Do you have any idea on how to switch between configurations ?
In linux by writing to bConfigurationValue for the usb port where the module is connected, ie
echo 2 >/sys/bus/usb/devices/<usbportname>/bConfigurationValue for configuration #2.
<usbportname> is 1-2 in your Ubuntu dmesg.
How to do it in FreeBSD is something you have to find out by yourself but it may not even be needed.
Linux will usually default to config #1 except in the case of all interfaces in config #1 is of "vendor specific" type (Class = 255, unknown type) while config #2 has known class interfaces. In such case config #2 will be the default config.
I have no idea about how FreeBSD selects the default config initially.
You can see from your Ubuntu dmesg that 4 ttyUSB devices has been created so the active config is #1 and Ubuntu has a serial driver (option.ko) which has support for the module.
The module should had worked in Ubuntu either as a direct ethernet device or as a ppp dial-up modem.
Interface assignment for ME909u-521:
Cfg#1
MI_00/01 HUAWEI Mobile Connect - Network Card (cdc_ether)
MI_02 HUAWEI Mobile Connect - Modem
MI_03 HUAWEI Mobile Connect - Application Interface
MI_04 HUAWEI Mobile Connect - PC UI Interface
MI_05 HUAWEI Mobile Connect - GPS Interface
Cfg#2
MI_00/01 HUAWEI Mobile Connect - Network Card (cdc_mbim)
MI_02 HUAWEI Mobile Connect - GPS Interface
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 03 Aug 2015, 01:59
by beeloo
Well, I found out how to change mode on FreeBSD:
Code: Select all
usbconfig -d 1.2 set_config 0 # 0 or 1 for 1 or 2
I'll keep using mode 1, like Ubuntu does.
I'm currently working on building a new kernel following this page:
http://technotation.com/2012/08/15/free ... broadband/
Thank you for your help, I'll try to keep you informed of the result.
Cheers
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 03 Aug 2015, 13:44
by beeloo
So I solved my issue by recompiling the FreeBSD/pfSense kernel.
See that post for more details:
https://forum.pfsense.org/index.php?top ... #msg543091
If there was a better solution with usb_modeswitch or whatever by changing the product ID by an other one, It would be much easier.
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 03 Aug 2015, 15:39
by Josh
There is nothing usb_modeswitch can do with respect to the USB IDs. This is entirely up to the firmware of the modem.
You can change the configuration value with usb_modeswitch too. Edit your config file:
Code: Select all
DefaultVendor= 0x12d1
DefaultProduct= 0x1573
Configuration=1
You should use version 2.2.5 of usb_modeswitch though. There is a bug regarding the configuration check in previous versions.
Re: Huawei ME909u-521 on FreeBSD (pfSense 2.2.4)
Posted: 27 Oct 2015, 22:14
by Josh
Addendum:
With Linux' udev mechanics, usb_modeswitch's Huawei catch-all rule will not trigger for this device because interface 0 is not of storage class. So there has to be an exception, an additional dedicated rule line in the "rules" file.
This will go into the next data package release.