Estou tentando estabelecer uma conexão 3G com o Raspbian, um dongle USB 3G, usb_modeswitch
e wvdial
. Eu segui este tutorial que funcionou bem antes com um dongle 3G diferente.
Meu dongle 3G é um ZTE D6601, o SIM não tem PIN e a conexão funciona perfeitamente com a ferramenta ISPs no Windows e no Ubuntu 15 com a ferramenta de banda larga móvel integrada. Mas eu preciso fazer isso em um Raspberry Pi e na linha de comando.
Isso é o que eu tentei até agora: Quando eu inicializo o Raspbian, lsusb
retorna
Bus 001 Device 004: ID 19d2:0154 ZTE WCDMA Technologies MSM
Eu então corro
sudo usb_modeswitch -I -v 19d2 -p 0154 -c /etc/usb_modeswitch.conf
Que altera o ProductID para
Bus 001 Device 009: ID 19d2:0108 ZTE WCDMA Technologies MSM
Há mais de um dongle 3G com 0154 como DefaultProduct
ID, portanto as regras de comutação padrão de usb_modeswitch
não funcionam. 0108 é o que o Ubuntu troca o dispositivo ou o que acontece quando eu sudo eject
o drive de CD virtual, então eu usei isso.
Meu /etc/network/interfaces
foi alterado apenas para usar uma conexão Wi-Fi:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Até agora, tudo bem. Quando executo sudo wvdialconf
, um modem é detectado em /dev/ttyUSB1
. Eu então corro sudo wvdial dcom
com dcom
sendo definido assim (APN "e-connect" está correto, nenhum usuário / senha é necessário):
[Dialer dcom]
Modem = /dev/ttyUSB1
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","e-connect"
Stupid Mode = 1
Modem Type = Analog Modem
Phone = *99#
ISDN = 0
Username = { }
Auto Reconnect = 1
Password = { }
Baud = 460800
O shell retorna isso:
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
OK
--> Sending: ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","e-connect"
AT+CGDCONT=1,"IP","e-connect"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT 21600000
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Sat Apr 25 18:09:08 2015
--> Pid of pppd: 5530
--> Using interface ppp0
--> pppd: [08]FX[01]�FX[01]8GX[01]p<X[01]�PX[01]�QX[01] (+4 more times)
Depois de executar isso, ifconfig
mostra que ppp0
foi criado, mas nenhum endereço IP foi atribuído. Então, cerca de 10 segundos depois, isso acontece:
--> Disconnecting at Sat Apr 25 18:09:39 2015
--> The PPP daemon has died: A modem hung up the phone (exit code = 16)
--> man pppd explains pppd error codes in more detail.
--> Try again and look into /var/log/messages and the wvdial and pppd man pages for more information.
--> Auto Reconnect will be attempted in 5 seconds
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","e-connect"
AT+CGDCONT=1,"IP","e-connect"
OK
--> Modem initialized.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","e-connect"
AT+CGDCONT=1,"IP","e-connect"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
ERROR
--> Invalid dial command.
--> Disconnecting at Sat Apr 25 18:09:45 2015
Se eu executar wvdial dcom
novamente, ele repetirá a saída da segunda tentativa de conexão acima ( Invalid dial command
) e nem mesmo configurará ppp0
. Estranhamente, depois de um rápido sudo wvdialconf
(durante o qual /etv/wvdial.conf
permanece inalterado), posso me conectar novamente, mas ele não atribuirá mais nenhum IP e quebra após 10 segundos. Eu repliquei isso várias vezes.
Talvez isso também seja interessante: wlan0
perde seu IP no momento em que ppp0
é criado e só posso recuperá-lo executando sudo ifdown wlan0
e sudo ifup wlan0
, embora esteja configurado para se reconectar automaticamente.