Abe Estrada

Huawei E3372 + Raspberry Pi

Para un proyecto que estoy realizando, necesitaba hacer funcionar un modem USB en una Raspberry Pi, específicamente un Huawei LTE E3372. Esto me va a permitír tener autonomía en cuestión de conexión a Internet, evitando tener que depender de redes WiFi.

Este modem en específico funciona de una forma diferente a los modems USB más comúnes, los que requieren realizar una conexión de forma manual; pero este modem funciona como un “ethernet hub” que hace creer a la Raspberry Pi que esta conectada por medio de ethernet y supongo hace la conexión más estable.

La mayoría de los modems USB tienen dos funciones, una de ellas es como memoria USB que permite tener acceso a los drivers y en algunos casos (si el modem USB lo permite) acceder a la tarjeta micro SD, la otra función es como modem USB. Por tal motivo, cuando el modem USB es insertado la primer función que se activa es la de memoria USB y si se quiere tener acceso a la función de modem USB hay que hacer el camio de forma manual.

El comando para hacer el cambio de memoria USB a modem USB es usb_modeswitch y en la versión más reciente de Raspbian (2016-05-10) viene instalado. Para lograr identificar el ID del dispositivo se debe ejecutar lsusb

$ lsusb
Bus 001 Device 007: ID 12d1:1f01 Huawei Technologies Co., Ltd.
Bus 001 Device 006: ID 1241:0003 Belkin
Bus 001 Device 005: ID 22b8:0938 Motorola PCS
Bus 001 Device 004: ID 0424:2517 Standard Microsystems Corp. Hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

En mi caso el modem USB esta identificado como 12d1:1f01:

Bus 001 Device 007: ID 12d1:1f01 Huawei Technologies Co., Ltd.

Siendo 12d1 el ID del ‘vendor’ y 1f01 el ID del producto.

Con ese dato podemos hacer el cambio de dispositivo de almacenamiento a modem USB de la siguiente manera:

$ sudo usb_modeswitch -J -v 0x12d1 -p 0x1f01

El comando es usb_modeswitch.

  • -J es un parámetro específico para los dispositivos Huawei HuaweiNewMode
  • -v es para definir el ‘vendor’, en este caso 0x12d1
  • -p define el producto, 0x1f01
$ sudo usb_modeswitch -J -v 0x12d1 -p 0x1f01
Look for default devices ...
   product ID matched
 Found devices in default mode (1)
Access device 008 on bus 001
Current configuration number is 1
Use interface number 0
Use endpoints 0x01 (out) and 0x81 (in)

USB description data (for identification)
-------------------------
Manufacturer: HUAWEI_MOBILE
     Product: HUAWEI_MOBILE
  Serial No.: 0123456789ABCDEF
-------------------------
Using standard Huawei switching message
Looking for active driver ...
 OK, driver detached
Set up interface 0
Use endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
 OK, message successfully sent
Reset response endpoint 0x81
Reset message endpoint 0x01
-> Run lsusb to note any changes. Bye!

Con esto el dispositivo va a entrar en el modo de modem y va a ser detectado como un ‘ethernet hub’ (eth1), se puede comprobar ejecutando el siguiente comando ifconfig -a:

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet6 addr: fe80::5925:cdbe:c95f:ec84/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.8.100  Bcast:192.168.8.255  Mask:255.255.255.0
          inet6 addr: fe80::584f:751f:bb3e:e26b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15118 (14.7 KiB)  TX bytes:7565 (7.3 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Una vez realizado este “switch”, se puede hacer uso del modem y de la conexión a Internet.