NO CARRIER with Huawei ME906s
With my Huawei ME906s on Linux (tested with debian sid, debian experimental, Fedora 24 and Ubuntu 16.04, but the result's the same under Windows 10), I get either ERROR
or NO CARRIER
messages (depending on which device I'm using). In contrast to this question, the behavior is consistent and also occurs when I run wvdial long after boot. I have removed the SIM PIN and verified that the mobile network works with an Android smartphone.
Using Linux 4.7.0-rc4, I see 5 devices I can associate to the card:
-
/dev/ttyUSB0
- Speaks AT, output shown below -
/dev/ttyUSB1
- No output (for GPS?) -
/dev/ttyUSB2
- Speaks AT, but answers ERROR instead of NO CARRIER to dial -
/dev/ttyUSB3
- Same behavior as /dev/ttyUSB0 -
/dev/ttyUSB4
- No output (for GPS?)
Here's the output I get with a specially crafted wvdial.conf:
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: AT+CFUN=1
AT+CFUN=1
OK
--> Sending: ATQ0 V1 E1 S0=0
ATQ0 V1 E1 S0=0
OK
--> Sending: AT+CGDCONT=1,"IP","internet.t-mobile"
AT+CGDCONT=1,"IP","internet.t-mobile"
OK
--> Sending: ATI
ATI
Manufacturer: Huawei Technologies Co., Ltd.
Model: ME906s-158
Revision: 11.617.00.00.00
IMEI: 8<snip by @phihag>0
+GCAP: +CGSM,+DS,+ES
OK
--> Sending: AT+CPIN?
AT+CPIN?
+CPIN: READY
OK
--> Sending: AT+CFUN?
AT+CFUN?
+CFUN: 1
OK
--> Sending: AT+CSQ
AT+CSQ
+CSQ: 99,99
OK
--> Sending: AT+CREG?
AT+CREG?
+CREG: 0,2
OK
--> Modem initialized.
--> Sending: ATD*99#
--> Waiting for carrier.
ATD*99#
NO CARRIER
--> No Carrier! Trying again.
The last 5 lines are then repeated 10+ times.
Other tools like sakis3g and ModemManager/NetworkManager hang as well while trying to connect.
I am also seeing a network link associated with the modem, but that's not reachable either:
$ ip link
...
6: enp0s20f0u5c2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 02:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
I believe rfkill
not to be active:
$ rfkill list
0: tpacpi_bluetooth_sw: Bluetooth
Soft blocked: no
Hard blocked: no
1: tpacpi_wwan_sw: Wireless WAN
Soft blocked: no
Hard blocked: no
3: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
10: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
(talking to /dev/ttyUSB0
)
AT^RFSWITCH?
^RFSWITCH: 1,1
OK
As suggested, I tried using AT^NDISDUP
instead, to no avail (although at the next ATZ
I see additional lines):
$ minicom -D /dev/ttyUSB0
ATZ
OK
^PDPSTATUS: 2
^NDISSTAT: 0,0,,"IPV4"
AT^NDISDUP=1,1,"internet.t-mobile"
OK
AT^DHCP?
ERROR
However, ip link
still shows NO-CARRIER, and dhclient -v enp0s20f0u5c2
times out as well. With ethtool
I see:
$ ethtool -i enp0s20f0u5c2
driver: cdc_ether
version: 22-Aug-2005
firmware-version: CDC Ethernet Device
expansion-rom-version:
bus-info: usb-0000:00:14.0-5
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
dmesg looks good to me:
[ 11.674523] cdc_ether 1-5:2.0 usb0: register 'cdc_ether' at usb-0000:00:14.0-5, CDC Ethernet Device, 02:1e:10:1f:00:00
[ 11.674630] usbcore: registered new interface driver cdc_ether
[ 11.675451] option 1-5:2.2: GSM modem (1-port) converter detected
[ 11.675746] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB0
[ 11.675767] option 1-5:2.3: GSM modem (1-port) converter detected
[ 11.676499] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB1
[ 11.676528] option 1-5:2.4: GSM modem (1-port) converter detected
[ 11.676569] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB2
[ 11.676586] option 1-5:2.5: GSM modem (1-port) converter detected
[ 11.676620] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB3
[ 11.676637] option 1-5:2.6: GSM modem (1-port) converter detected
[ 11.676672] usb 1-5: GSM modem (1-port) converter now attached to ttyUSB4
Similarily, the lsusb
output looks fairly normal.
How do I get my Huawei ME906s to connect?
Did you check the AT^RFSWITCH? status? It should return AT^RFSWITCH: 1,1. If there are any zeroes, then the modem is in rfkill "airplane" mode.
The huawei modem has two rfswitch (also known as rflock or rfkill) settings: one hardware and one software. The Software rf-kill can be disabled by issuing AT^RFSWITCH=1.
The hardware setting must be disabled from your mainboard/platform, as it actually pulls low a pin on the M.2/mPCIe connector. On laptops this is often controlled by a ACPI function key. On my X260, this is exposed on Linux as /sys/class/rfkill/rfkill3/state
You might want to try a more recent connection method:
AT^NDISDUP=1,1,"internet.t-mobile"
Then use a DHCP client on your enp0s20f0u5c2
interface that you see.
If you are connected, then AT^DHCP?
should also yield an answer with your IP in hexadecimal notation.
I had the same issue with my ME906s-158 modem. Tried to use it via MBIM - no luck. Modem had an outdated firmware - so I updated it to latest one got it from techship.com. After update ME906s worked as expected in cdc_ether mode. Before enabling connection on modem network interface looked as:
26: enp0s29u1u2u5c2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 02:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
I need to enable connection by AT command AT^NDISDUP=1,1
. And interface got IP via DHCP:
26: enp0s29u1u2u5c2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 02:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
inet 10.173.107.197/30 brd 10.173.107.199 scope global dynamic enp0s29u1u2u5c2
valid_lft 518398sec preferred_lft 518398sec
inet6 fe80::ef85:b8f8:761e:b922/64 scope link
valid_lft forever preferred_lft forever