2012-04-28

Vodafone k3805-z: truques e dicas para Linux

A Vodafone faz customize a pens 3G. Quer isto dizer que têm capacidade de:


  • ter um SW único para todas as pens (TMN e Kanguru fazem custom ao SW de cada pen fornecido pelo fabricante, com provável duplicação de trabalho)
  • podem vender Routers 3G que só funcionam com pens deles
  • se houver bugs, podem ser bugs exclusivos Vodafone

Assim, como reinventam a roda, em Linux as coisas podem não funcionar bem à partida.

Exemplo: pen Vodafone k3805-z, encomenda custom à ZTE (daí o "-z"). Usa um chipset da Icera (empresa britânica de chips GSM/e amigos comprada pela Nvidia) que permite awesome noise-reduction/interferência/coisas.

Infelizmente essa pen tem um bug que requer que seja desligado o tráfego ARP na interface de rede por ela criada, nomeadamente

# ifconfig usb0 -arp
(o bug é simulável em Windows colocando o device driver da pen em modo promíscuo (?!em 3G?!))

Se tiverem com paciência podem tentar instalar o SW "oficial" da Vodafone para Linux (apesar de não o suportarem oficialmente, pagavam a devs para terem SW para as pens -- infelizmente pelo meio deixavam a gestão de modems 3G do Linux um pouco confusa).

Como esse SW está um pouco fora de validade, copiem apenas os scripts, para /etc/udev/rules.d/ .

Temos ainda código inspirado pelo Windows para a rede se portar melhor (caso contrário havia problemas de conectividade causados pela tabela de IP (???) ficar cheia que obrigavam a desligar e ligar a ligação.


$ cat /etc/NetworkManager/dispatcher.d/00a-vdf-hack1.sh
#!/bin/sh

IF=$1
STATUS=$2

if [ ! "$IF" = "usb0" ]; then
    exit 0
else
    if [ "$STATUS" = "up" ]; then
        IP=`/sbin/ifconfig usb0 |grep -i "inet addr:" | cut -f 2 -d ":" | cut -f 1 -d "B"`
        IP=`echo $IP | cut -f 1 -d " "`

        BASE=`echo $IP | cut -f 1-3 -d "."`
        FIM=`echo $IP | cut -f 4 -d "."`
        MENOS=`/usr/bin/expr $FIM - 1`

        /sbin/ifconfig usb0 $IP/24
        /sbin/route add -net $IP netmask 255.255.255.255 dev usb0
        /sbin/route add -net $BASE.255 netmask 255.255.255.255 dev usb0
        /sbin/route add default gw $BASE.$MENOS dev usb0 metric 4
    fi
fi

exit 0


 Dito isto, termina aqui o meu dump de info.

1 comment:

Sintra said...

Um driver promíscuo? AI AI, O QUE PRAI VAI!