sexta-feira, 26 de abril de 2013

Modem USB Huawei E173 no CentOS 6.2

Introdução:
Esse modem é muito comum e disponível em todas as operadoras do Brasil, a instalação é relativamente simples, mas pode dar muita dor de cabeça se não forem alguns macetes, acredite em mim.

Suprir as dependências:
# yum install libusb usbutils

Instalando o usb_modeswitch a partir dos fontes:
Esse é o macete mais importante, sofri, sofri, sofri, por ter instalado o pacote .rpm, baixe os fontes e compile.

Os pacotes podem ser obtidos em http://www.draisberghof.de/usb_modeswitch/#download. Por exemplo, para a versão no momento em que escrevo esse post, usei os comandos:
# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.2.5.tar.bz2
# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20121109.tar.bz2
# tar -xjvf usb-modeswitch-1.2.5.tar.bz2
# tar -xjvf usb-modeswitch-data-20121109.tar.bz2

# cd usb-modeswitch-1.2.5
# make install
gcc -o usb_modeswitch usb_modeswitch.c -Wall -l usb
install -D -s --mode=755 usb_modeswitch /usr/sbin/usb_modeswitch
install -D --mode=755 usb_modeswitch.sh /lib/udev/usb_modeswitch
install -D --mode=644 usb_modeswitch.conf /etc/usb_modeswitch.conf
install -D --mode=644 usb_modeswitch.1 /usr/share/man/man1/usb_modeswitch.1
install -d /var/lib/usb_modeswitch
install -D --mode=755 usb_modeswitch_dispatcher /usr/sbin/usb_modeswitch_dispatcher

# cd ../usb-modeswitch-data-20121109
# cp 40-usb_modeswitch.rules /lib/udev/rules.d
# cp -r usb_modeswitch.d /usr/share/usb_modeswitch

Conecte o modem.

Verifique se o mesmo foi reconhecido pelo sistema:
# dmesg
usb 1-6: new high speed USB device using ehci_hcd and address 122
usb 1-6: New USB device found, idVendor=12d1, idProduct=1c05
usb 1-6: New USB device strings: Mfr=2, Product=1, SerialNumber=0
usb 1-6: Product: HUAWEI Mobile
usb 1-6: Manufacturer: HUAWEI
usb 1-6: configuration #1 chosen from 1 choice
scsi11 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 122
usb-storage: waiting for device to settle before scanning
scsi12 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 122
usb-storage: waiting for device to settle before scanning
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems
option 1-6:1.0: GSM modem (1-port) converter detected
usb 1-6: GSM modem (1-port) converter now attached to ttyUSB0
option 1-6:1.1: GSM modem (1-port) converter detected
usb 1-6: GSM modem (1-port) converter now attached to ttyUSB1
option 1-6:1.2: GSM modem (1-port) converter detected
usb 1-6: GSM modem (1-port) converter now attached to ttyUSB2


# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2

Baixar o rpm do Gammu:
Os pacotes podem ser obtidos em http://wammu.eu/download/, você vai precisar baixar dois pacotes gammu e  libGammu. Para a versão no momento em que escrevo esse post, usei os comandos:
# wget http://download.opensuse.org/repositories/home:/Nijel/CentOS_CentOS-6/x86_64/gammu-1.32.0-1.2.x86_64.rpm
# wget http://download.opensuse.org/repositories/home:/Nijel/CentOS_CentOS-6/x86_64/libGammu7-1.32.0-1.2.x86_64.rpm
# yum install gammu-1.32.0-1.2.x86_64.rpm libGammu7-1.32.0-1.2.x86_64.rpm
Segundo macete, usei o yum para instalar os pacotes, pois ele já verifica as dependências no sistema.

Criar o arquivo gammurc:
# vi/etc/gammurc
[gammu]

port = /dev/ttyUSB0
connection = at19200
model = at
synchronizetime = yes
logfile = /var/log/gammu.log
logformat = textalldate
use_locking =
gammuloc =
name=e173s


Testar o modem:
# gammu --identify
Device               : /dev/ttyUSB0
Manufacturer         : Huawei
Model                : E173 (E173)
Firmware             : 21.015.01.03.149
IMEI                 : 35XXXXXXXXXXX15
SIM IMSI             : 72XXXXXXXXXXX76


# echo "Teste de envio" | gammu --sendsms TEXT 9XXXXXX9
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network answer..OK, message reference=4


Obs. 9XXXXXX9 é o número do celular para onde a mensagem será enviada.

Agradecimentos:
Agradeço ao meu amigo Éderson Ribeiro (Dérsão), na realidade ele me deu todos os toques importantes, eu quebrei muito a cabeça e não ia, o que eu fiz foi só colocar neste artigo o que ele me ensinou ;-)