Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

sábado, 24 de agosto de 2013

OpenWRT: Conectando um modem 3g no seu roteador

Este é mais um artigo da série sobre o OpenWRTDentre os diversos usos de uma USB em um roteador com OpenWRT, um dos mais interessantes é a possibilidade de utilizá-la para conectar um modem 3g.

A rede de dados móvel já possui uma cobertura bem interessante, ao menos nos grandes centros. Em alguns casos, já contamos com a disponibilidade até de redes 4g. Já não é raro a situação onde a conexão de dados móvel tem maior velocidade de transferência do que a conexão cabeada. Contudo, em geral, a latência da rede de dados móvel é bem pior.

Os modem 3g tem um caráter individualista: você conecta diretamente no seu PC e somente ele usa a conexão de dados. Claro que existe a possibilidade de compartilhar a internet através de um outro computador, mas não é nada prático. Um roteador para esta função seria o ideal. É ótimo! Na infraestrutura, você só precisa de uma tomada e pode fornecer internet para um grupo PEQUENO de pessoas. Existe alguns produtos no mercado com o slogan de "roteador 3g" ou "roteador para modem 3g". Eles são roteadores wireless com uma porta USB ou mesmo, nos casos de um modem embutido, uma entrada para SIM Card. Alguns até contam com uma porta Ethernet para aumentar as possibilidades.

Mas qual a diferença destes roteadores "3g" e o que eu tenho aqui? Ele também tem uma porta USB! Por que não funciona conectar um modem 3g nele? A diferença é somente software. Os fabricantes, por ser interessante para seu negócio, limitam as funcionalidades do software do seu roteador. Com OpenWRT, o que você vai fazer com a USB é problema seu. Não temos qualquer limitação artificial.

O primeiro passo para a utilização do modem é a instalação dos drivers e programas para seu modem. Sempre tome cuidado no uso de disco pois colocar muitas funções no seu roteador irá acabar com o seu limitado espaço em disco (que você pode resolver com uma unidade externa USB). Se precisar de mais de uma porta USB, para usá-las também para conectar HD, impressora, você pode precisar de um Hub USB. Só lembre-se que, se for usar um Hub USB, seu modem 3g pode necessitar de um Hub com alimentação externa. O roteador, normalmente, não tem potência suficiente para alimentar mais dispositivos em conjunto com um dispositivo pesado como um modem 3g. Sem o Hub  normalmente, o roteador dá conta.

Considerando que você tem espaço, os pacotes necessários são:
  • comgt
  • kmod-usb-serial
  • kmod-usb-serial-option
  • kmod-usb-serial-wwan ou kmod-usb-acm (depende do seu modem)
  • usb-modeswitch
  • usb-modeswitch-data (Atualizando 3: não necessário para versão BB ou superior)
  • luci-proto-3g (para permitir a configuração pela interface WEB)
Atualizando 4: Atualmente existe uma nova classe de modems 3g que não são CDC-ACM. Usam o padrão QMI. São outros pacotes e a configuração é ainda apenas via arquivo de configuração. Atualizarei sobre estes modens no futuro.

Para instalar, pode ser feito pela interface gráfica (sempre rodando um update antes para baixar a lista de pacotes) ou pela linha de comando:
opkg update

opkg install comgt kmod-usb-serial ...
Se estiver com dúvidas quando ao uso do kmod-usb-serial-wwan ou kmod-usb-acm, você pode instalar todos os pacotes (se tiver espaço). Se quiser descobrir qual é o correto, pode também conectá-lo em um desktop Linux e ver qual módulo é carregado (acm ou wwan). Algo como:
linuxdesktop:$ lsmod | grep acm
Vai listar se o módulo cdc-acm foi carregado.

Atualizando 3: Para a versão BB, é necessário ativar o serviço usbmode.

Instalado os módulos e programas, ao conectar o modem, você encontrará alguns dispositivos novos em /dev/. Eles podem ser /dev/ttyUSB{0,1,3} ou /dev/ttyACM. Isto indicará que seu modem foi reconhecido. Se não aparecer, tende reiniciar ou remover/reconectar o modem. Depois do dispositivo presente, basta adicionar uma nova interface. Você também poderá ver a criação destes dispositivos pelos logs na interface WEB.

Vou limitar a configuração pela interface WEB, que é mais simples e atende um público maior. Em "Rede/Interfaces", clique para adicionar uma nova interface. Escolha o nome que quiser, mas costumo seguir um padrão como wwan (wireless wan). No protocolo  escolha "UMTS/GPRS/EV-DO". Ao prosseguir, você poderá configurar os demais parâmetros.

Nesta configuração, o dispositivo do modem vai ser um dos dispositivos que apareceram com o modem (/dev/ttyUSB0 ou /dev/ttyACM). O tipo de serviço, APN, e usuário e senha depende do seu provedor mas, se não souber, pergunte para quem sabe. O PIN só é necessário se seu cartão foi protegido por senha. Se não souber o que é isso, provavelmente não precisa. Por padrão, o roteador irá conectar pelo modem assim que o roteador ligar ou quando o modem for conectado. Se quiser fazer isto manualmente, desative a opção de conexão na inicialização em "Opções Avançadas". Ainda falta a configuração da zona do firewall, que é fundamental para o funcionamento. O mais simples é simplesmente configurar esta nova interface na zona WAN. Assim, a mesma conectividade que você teria pela porta WAN, você terá na conexão 3g. Se tudo der certo, após aplicar as configurações, seu modem irá conectar em breve.

Sentiu falta de alguma coisa? Ah, não tem opção de configurar o número do telefone pela configuração do OpenWRT. :-( E, para alguns casos, isto é fundamental (Vivo). Para mudar o número de discagem, edite o arquivo /etc/chatscripts/3g.chat e mude o número do comando ATDT. Ex:
/etc/chatscripts/3g.chat:

OK      "ATDT*99#"
No roteador, você tem o editor vi. Para novatos ele é bem estranho mas fundamental saber trabalhar com ele para se virar neste mundo UNIX. Também pode copiar o arquivo, editar no desktop e copiar de volta. Só cuidado para usar um editor que não troque o "nova linha" de UNIX para Windows. Não use o notepad!

Atualizando 1: a versão Barrier Breaker (14.07) já consta com uma opção na configuração para definir o número de discagem: dialnumber. Entretanto, ela não está ainda disponível na interface Luci (WEB). Desta forma, ainda será necessário editar um arquivo de configuração (/etc/config/network) ou usar comandos uci.

Atualizando 2: a futura versão do Luci que acompanhará o OpenWRT Caos Calmer (em desenvolvimento) terá suporte a configuração do dialnumber pela interface web.

Mas ainda não funcionou! Observe as mensagens do sistema (pela interface WEB ou comando logread). Lá estará o motivo de não ter funcionado.

Se a conexão 3g é a sua "segunda conexão", você pode estar interessado também no artigo sobre balanceamento de conexões.

Até a próxima.

PS: Depois que acabar alguns projetos prioritários que estão em fase de conclusão, vou ver se gasto um tempo para adicionar a opção do número de discagem na interface WEB.

57 comentários:

  1. Podia postar instalar e configurar o squid no openwrt instalado em um mikrotik.

    ResponderExcluir
  2. Primeiramente parabens pelo seu BLOG muito interessante e util!
    Preciso de uma ajuda:
    Estou utilizando um TPLink WR1043ND + Vivo 3g Dlink (DWM-156 a6).

    Esta tudo detectado mas quando efetua a discagem, aparece o seguinte erro:
    Dec 4 15:02:14 OpenWrt daemon.notice pppd[9102]: pppd 2.4.5 started by root, uid 0
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: abort on (BUSY)
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: abort on (NO CARRIER)
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: abort on (ERROR)
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: report (CONNECT)
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: timeout set to 12 seconds
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: send (AT&F^M)
    Dec 4 15:02:15 OpenWrt local2.info chat[9106]: expect (OK)
    Dec 4 15:02:27 OpenWrt local2.info chat[9106]: alarm
    Dec 4 15:02:27 OpenWrt local2.info chat[9106]: Failed
    Dec 4 15:02:27 OpenWrt daemon.err pppd[9102]: Connect script failed
    Dec 4 15:02:28 OpenWrt daemon.info pppd[9102]: Exit.
    Dec 4 15:02:28 OpenWrt daemon.notice netifd: Interface 'WWAN' is now down

    Já efetuei diversas modificacoes no arquivo 3g.chat e ele esta desta maneira agora:
    ABORT BUSY
    ABORT 'NO CARRIER'
    ABORT ERROR
    REPORT CONNECT
    TIMEOUT 12
    "" "AT&F"
    OK "ATE1"
    OK 'AT+CGDCONT=1,"IP","$USE_APN"'
    SAY "Calling UMTS/GPRS"
    TIMEOUT 30
    OK "ATDT*99#"
    CONNECT ' '


    Tem algum ideia de como podemos resolver este problema?

    Grato
    Eugenius

    ResponderExcluir
    Respostas
    1. Olá Eugenius,

      Ele está falhando no "AT&F^M". Provavelmente tem alguma coisa errada no seu arquivo. Não sou expert em sintaxe de ppp mas, aparentemente, ele ainda está esperando um OK, mesmo você usando "" "AT&F". E seu modem não está retornando o OK.

      Dica: conecta a partir de um Linux desktop e verifique se seu modem funciona no Linux e quais comandos ele usa. Você verá os comandos usados em /var/log/alguma coisa (depende da distribuição).

      Excluir
  3. Luiz pode me dar uma ajuda? Qdo instalei a openwrt no meu tp link, eu configurei p usar o modem 3g com chip da claro. O problema é que agora estou usando o chip da viivo e preciso inserir o nº de discagem. Vc pode por favor me ajudar passo a passo p poder editar o arquivo 3g.chat que vc menciona no post?
    Obrigado....

    André

    ResponderExcluir
    Respostas
    1. André,

      Você precisa de um "passo a passo" para editar usando vi. :-) Busca no google que tem um monte.

      Depois de conectar com ssh, execute:

      vi /etc/chatscripts/3g.chat

      No vi, i para modo de inserção, altere o que você quer, esc, :, w, q, enter.
      Se executar novamente o comando vi, você poderá observar se seu arquivo foi modificado.

      Abs,

      Excluir
    2. Obrigado Luiz, deu certo aqui, usei o comando vi no putty e funcionou.
      Só tira mais uma dúvida p mim por gentileza:
      Como eu faço para que o modem trabalhe só no 3g? Pelo que vi parece que ele fica meio no automático alternando entre 2g e 3g. Existe algum esquema p isso?

      Obrigado mais uma vêz...

      André

      Excluir
    3. André,

      Se eu não me engano, na configuração da interface você pode escolher o tipo. Só não testei na prática. Também pode existir algum comando AT que faça isto. Pelo que eu busquei rapidamente, depende do modelo do seu modem. Busca na internet por "AT commnad select only 3g " que você poderá encontrar o comando correto. Depois só adicionar no arquivo que você já editou.

      Ah, e provavelmente a oscilação é devido a qualidade do sinal. Talvez em modo 3g-only, você terá falta de conectividade quando antes ele ia para 2g. Mas só testando para garantir.

      Excluir
  4. Luiz bom dia!

    Então... achei o comando AT referente ao meu modem neste site:
    https://wiki.archlinux.org/index.php/Huawei_E1550_3G_modem

    Aí usei o seguinte comando:
    AT^SYSCFG=mode, order, band, roaming, domain - System Config

    Simplesmente adicionei uma linha com o comando acima no 3g,chat.
    AT^SYSCFG=14
    Mas infelizmente qdo coloco esse comando, o modem não conecta mais.
    Será que fiz algo errado?

    Abrç

    André

    ResponderExcluir
    Respostas
    1. Acho que pela sintaxe, ele quer os outros campos. Seria algo como:

      AT^SYSCFG=14,3,40000000,2,4

      Excluir
  5. amigo, gostaria de acessar um dispositivo pela usb usando um cabo serial-usb (prolific).
    Já instalei alguns pacotes: kmod-usb-serial kmod-usb-serial-pl2303

    O que preciso mais para acessar esta porta com pelo pc? Teria como me ajudar?
    dmesg

    usb 1-1: USB disconnect, device number 2
    [ 1566.750000] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
    [ 1566.760000] pl2303 1-1:1.0: device disconnected
    [ 1569.300000] usb 1-1: new full-speed USB device number 3 using ehci-platform
    [ 1569.450000] pl2303 1-1:1.0: pl2303 converter detected
    [ 1569.480000] usb 1-1: pl2303 converter now attached to ttyUSB0

    ResponderExcluir
    Respostas
    1. Como assim? Você conectou um adaptador usb/serial no roteador? Ou no seu PC? Quer falar o que com quem?

      Ao menos pela msg de kernel, o seu cabo foi conectado e reconhecido. A serial está em /dev/ttuUSB0.

      Excluir
    2. usb/serial está conectado no roteador e gostaria de acessar pela rede. Preciso me comunicar pela rede com um equipamento que usa rs232 .
      Obrigado pela atenção.

      Excluir
    3. Deixa eu entender: você conectou um dispositivo usb-serial na usb do roteador e quer acessar um equipamento conectado pela serial acessando o roteador?

      Se for isto, basta instalar os drivers seriais (normalmente é o kmod-usb-serial-pl2303) e um programa de acesso serial (como o minicom ou o screen). A sua serial deve estar em /dev/ttyUSB0. Na dúvida, depois de instalado os programas, não é diferente de um Linux normal. Qualquer documentação da versão Linux para desktop serve neste caso.

      Excluir
  6. Como vai Luiz? Estou precisando mais uma vez de sua ajuda.

    Segui todos os passos e não funcionou.

    Mar 29 01:02:48 OpenWrt local2.info chat[19820]: CONNECT
    Mar 29 01:02:48 OpenWrt local2.info chat[19820]: -- got it
    Mar 29 01:02:48 OpenWrt local2.info chat[19820]: send ( ^M)
    Mar 29 01:02:48 OpenWrt daemon.info pppd[19816]: Serial connection established.
    Mar 29 01:02:48 OpenWrt daemon.info pppd[19816]: Using interface 3g-Claro3G
    Mar 29 01:02:48 OpenWrt daemon.notice pppd[19816]: Connect: 3g-Claro3G <--> /dev/ttyUSB0
    Mar 29 01:02:49 OpenWrt daemon.notice pppd[19816]: Modem hangup
    Mar 29 01:02:49 OpenWrt daemon.notice pppd[19816]: Connection terminated.
    Mar 29 01:02:50 OpenWrt daemon.info pppd[19816]: Exit.

    Depois de pesquisar bastante encontrei um situação parecida com minha aqui https://forum.openwrt.org/viewtopic.php?id=30818 mas meu inglês é nulo, e minha experiencia com o OpenWrt é de apenas 1 dia.

    Então adicionei a linha "option 'pppd_options' 'debug'" na configuração da interface.

    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: sent [LCP ConfReq id=0x1 ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: rcvd [LCP ConfReq id=0x6d ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: No auth is possible
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: sent [LCP ConfRej id=0x6d ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: rcvd [LCP ConfAck id=0x1 ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: rcvd [LCP ConfReq id=0x6e ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: sent [LCP ConfAck id=0x6e ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: sent [LCP EchoReq id=0x0 magic=0xfa888ad4]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: sent [IPCP ConfReq id=0x1 ]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: rcvd [LCP DiscReq id=0x6f magic=0x7293a772]
    Mar 29 01:12:05 OpenWrt daemon.debug pppd[21263]: rcvd [LCP EchoRep id=0x0 magic=0x7293a772 fa 88 8a d4]


    Não faço a menor ideia de como fazer funcionar.

    Abraço.

    ResponderExcluir
  7. Olá,

    Um pouco antes do primeiro log seria interessante. N parte do Connect... Got it, a comunicação do modem foi efetuada com sucesso. Neste caso, não é problema de drivers ou sinal. É o openwrt rejeitando ou a claro. Possivelmente método de autenticação, usuário, senha, apn.. No lado da claro, pagamento :-) se funciona em outro ambiente, fique com a primeira possibilidade.

    Pelo segundo log, o no auth is possible indica isto tbm, seguido de um confrej (possivelmente seu roteador rejeitando a configuração enviada pela claro). Termina com a claro pedindo para você desconectar discreq

    Reveja as conta ai

    ResponderExcluir
    Respostas
    1. Mar 29 09:33:45 OpenWrt local2.info chat[23906]: abort on (BUSY)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: abort on (NO CARRIER)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: abort on (ERROR)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: report (CONNECT)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: timeout set to 10 seconds
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: send (AT&F^M)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: expect (OK)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: AT&F^M^M
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: OK
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: -- got it
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: send (ATE1^M)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: expect (OK)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: ^M
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: ATE1^M^M
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: OK
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: -- got it
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: send (AT+CGDCONT=1,"IP","bandalarga.claro.com.br"^M)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: timeout set to 30 seconds
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: expect (OK)
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: ^M
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: AT+CGDCONT=1,"IP","bandalarga.claro.com.br"^M^M
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: OK
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: -- got it
      Mar 29 09:33:45 OpenWrt local2.info chat[23906]: send (ATD*99***1#^M)
      Mar 29 09:33:46 OpenWrt local2.info chat[23906]: expect (CONNECT)
      Mar 29 09:33:46 OpenWrt local2.info chat[23906]: ^M
      Mar 29 09:33:46 OpenWrt local2.info chat[23906]: ATD*99***1#^M^M
      Mar 29 09:33:46 OpenWrt local2.info chat[23906]: CONNECT
      Mar 29 09:33:46 OpenWrt local2.info chat[23906]: -- got it
      Mar 29 09:33:46 OpenWrt local2.info chat[23906]: send ( ^M)
      Mar 29 09:33:46 OpenWrt daemon.debug pppd[23888]: Script USE_APN=bandalarga.claro.com.br /usr/sbin/chat -t5 -v -E -f /etc/chatscripts/3g.chat finished (pid 23905), status = 0x0
      Mar 29 09:33:46 OpenWrt daemon.info pppd[23888]: Serial connection established.
      Mar 29 09:33:46 OpenWrt daemon.debug pppd[23888]: using channel 555
      Mar 29 09:33:46 OpenWrt daemon.info pppd[23888]: Using interface 3g-Claro3G
      Mar 29 09:33:46 OpenWrt daemon.notice pppd[23888]: Connect: 3g-Claro3G <--> /dev/ttyUSB0
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: sent [LCP ConfReq id=0x1 ]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [LCP ConfReq id=0x3f ]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: sent [LCP ConfRej id=0x3f ]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [LCP ConfAck id=0x1 ]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [LCP ConfReq id=0x40 ]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: sent [LCP ConfAck id=0x40 ]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: sent [LCP EchoReq id=0x0 magic=0x65471e26]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [LCP DiscReq id=0x41 magic=0x72aa26b6]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [CHAP Challenge id=0x1 , name = "UMTS_CHAP_SRVR"]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: sent [CHAP Response id=0x1 , name = "claro"]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [LCP EchoRep id=0x0 magic=0x72aa26b6 65 47 1e 26]
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: rcvd [CHAP Success id=0x1 ""]
      Mar 29 09:33:47 OpenWrt daemon.info pppd[23888]: CHAP authentication succeeded
      Mar 29 09:33:47 OpenWrt daemon.notice pppd[23888]: CHAP authentication succeeded
      Mar 29 09:33:47 OpenWrt daemon.debug pppd[23888]: sent [IPCP ConfReq id=0x1 ]
      Mar 29 09:33:47 OpenWrt daemon.notice pppd[23888]: Modem hangup
      Mar 29 09:33:47 OpenWrt daemon.notice pppd[23888]: Connection terminated.
      Mar 29 09:33:48 OpenWrt daemon.info pppd[23888]: Exit.
      Mar 29 09:33:48 OpenWrt daemon.notice netifd: Interface 'Claro3G' is now down

      Excluir
    2. O Modem é o Huawei E392 e ele está funcionando no windows.

      Excluir
    3. A parte do chat parece ok. Número e APN corretos.
      Ele conecta e passa para o LCP negociar o canal.

      Do diálogo LCP, pesquisei melhor e o DiscReq é "Discard Request". Então não foi o pedido de desconexão.
      Ele começou a falar com o autenticador CHAP da CLARO (UMTS_CHAP_SRVR). Iniciou a autenticação corretamente e conseguiu autenticar.

      O problema ocorre com o IPCP (http://en.wikipedia.org/wiki/Internet_Protocol_Control_Protocol). Neste caso, você pode tentar colocar isto na conf de rede:

      option 'pppd_options' 'debug noipdefault'

      O debug é opcional. Entretanto, isto já deveria ser padrão na versão 12.10. Veja o meu caso:

      root@router:~# cat /etc/ppp/options
      #debug
      logfile /dev/null
      noipdefault
      noaccomp
      nopcomp
      nocrtscts
      lock
      maxfail 0
      lcp-echo-failure 5
      lcp-echo-interval 1


      E talvez tente as opções:

      maxfail 40
      persist

      Excluir
    4. Este comentário foi removido pelo autor.

      Excluir
  8. Esse log que postei já estava com o debug noipdefault. Tentei o maxfail 40 e persist, mas não mudou nada. Que pena...
    Mas obrigado.

    ResponderExcluir
  9. Consegui fazer funcionar o modem huwaei e392 (claro 4g) com o roteador tl-wr1043nd.

    Utilizo o modem no pc com o discador da claro. Configurei o discador para acessar apenas redes LTE, pensava que essa era apenas um configuração local, porém parece que é alterada as configurações internas do modem.

    Conectei o modem no pc e mudei as configurações do discador para AUTO e o modem conectou no OpenWrt.

    Luiz obrigado pela atenção e paciência.

    Abraço

    ResponderExcluir
  10. Boa noite, Luiz. Ainda não dei continuidade à execução do seu tutorial, pois na lista de pacotes necessários consta o "kmod-usb-serial" duas vezes seguidas. Observei que existem vários pacotes com esse nome, e gostaria de saber se você esqueceu de adicionar o restante do nome em um dos pacotes, ou se você repetiu sem querer.

    Até mais! ;)

    ResponderExcluir
    Respostas
    1. Repetido mesmo. Pode ignorar. Vou arrumar no texto. Obrigado.

      Excluir
    2. Bom dia, Luiz. Fiz os procedimentos aqui, e deu certo! Está funcionando 100%! =D

      Mas, tenho uma dúvida: eu reparei que não há a opção de monitorar o tráfego mensal (por exemplo) da rede, tipo, o que eu consumi durante o mês e tals.

      Você sabe se tem algum pacote disponível que adicione essa função?

      Sim, e muitíssimo obrigado por disponibilizar este tutorial! ;)

      Excluir
    3. O openwrt tem por princípio não guardar dados deste tipo na flash para preservá-la. Se ela falhar por excesso de gravação, não é muito fácil trocar. Mesmo em roteadores enterprise (como um cisco), ele não preserva este tipo de informação, ficando a cargo de um sistema externo, em especial os que utilizam snmp.

      O que você tem são os contadores de tráfego de um linux convencional. Você pode pegar estes dados de diversas formas, como com o ifconfig:

      # ifconfig wlan0-1
      wlan0-1 Link encap:Ethernet HWaddr 92:F6:52:B0:C7:E3
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      RX packets:1911337 errors:0 dropped:0 overruns:0 frame:0
      TX packets:7399002 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:32
      RX bytes:343829527 (327.9 MiB) TX bytes:1778633594 (1.6 GiB)

      Observe a última linha.

      O problema é que estes contadores zeram quando a interface é derrubada. O mesmo ocorre ao reiniciar. Você precisaria de algum mecanismo de preservação desta informação. Preferencialmente, este dado não deve ser escrito na flash interna mas em um pendrive ou sistema externo (para preservar a flash).

      Opções? Pode fazer um script caseiro para escrever isto em um pendrive a cada 1min. Ele pode ser executado periodicamente pela cron. Depois ele precisaria somar todas as entradas em que a próxima leitura tiver menos tráfego (indicando que a conexão foi reiniciada) e a última leitura.

      Outra opção seria utilizar um sistema convencional de monitoramento de roteadores. Munin deve funcionar. Você também pode instalar o net-snmp no roteador e ler esta informação de um sistema externo. Se estiver usando um disco com pendrive no openwrt, pode, inclusive, instalá-lo também no roteador.

      Excluir
  11. Bom dia, Luiz
    Postei no artigo errado, desculpe!
    Sabe se existe a possibilidade do WDR 3600 conectar com um modem 3g/4g do tipo "Hi-link" por exemplo o ZTE MF823L?
    Esse tipo de modem hi-link criar conexão Ethernet e não utiliza um discador, somente uma interface web para configuração, toda a configuração feita fica salva no próprio modem.

    ResponderExcluir
  12. Provavelmente ele funciona como uma placa de rede USB. VC precisa dos drivers para isto. Pode buscar o módulo de kernel na internet pelo usbid do dispositivo (usando lsusb) ou fazer por tentativa e erro. Deve ser um kmod-usb-alguma-coisa, provavelmente kmod-usb-net.

    ResponderExcluir
  13. Olá Luiz!
    Gostaria de utilizar meu Modem da Claro 4G modelo Hauwei E 392 ligado a um roteador para se tornar um sinal de wifi na minha casa de praia. Mas não sei qual roteador adquirir, qual seria compatível com este tipo de Modem. Cada vendedor me diz uma coisa diferente. Será que você ou alguém poderia me ajudar pra que eu não gaste meu dinheiro à toa? Valeu!!! Abço.

    ResponderExcluir
    Respostas
    1. Patricia,

      Se trocar o firmware do seu roteador pelo OpenWrt, você poderia usar o 3g em qualquer roteador com USB. Você só precisaria de um roteador compatível com o OpenWrt.

      Quanto as soluções prontas de mercado, eu não saberia te indicar. Se for sua opção, sugiro que você leve o modem no local e teste in loco antes de comprar.

      Este blog tem diversos artigos relacionados ao OpenWrt. Se for o seu perfil trocar o sistema do seu roteador, seja bem vinda a bordo.

      Abs

      Excluir
  14. Ola Luiz
    Instalei OpenWrt AA 12.09 num mr3020 Tp-Link. Instalei todos os modulos necessarios para os modems 3g mas meu D-Link DWM-156 não quer saber de aparecer no Hardware e no lugar aparece um CD/Rom. Pesquisando achei que deve ou deveria ser usado modeswitch mas o HWid desse modem não aparece no modeswitch e não consigo ver as portas tty. Acabei com meu conhecimento de Linux. Vc sabe como resolver isso? Preciso de usar AA 12.09 para um projeto que estou tentando fazer. Já agradeço.

    ResponderExcluir
  15. Opa, tudo bem?

    Estou tentando configurar um HUAWEI E173 em um TL-WDR4300 e o dispositivo não é listado para seleção. Acessando via ssh e listando o /dev/ tenho o seguinte:
    ttyS0 ttyS15 ttyS8
    ttyS1 ttyS2 ttyS9
    ttyS10 ttyS3 ttyS11 ttyS4
    ttyS12 ttyS5
    ttyS13 ttyS6
    tty ttyS14 ttyS7

    Visualizando o dmesg, vejo que o dispositivo foi registrado:
    usb 1-1.2: new full-speed USB device number 3 using ehci-platform

    No arquivo /sys/kernel/debug/usb/devices:
    T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=12d1 ProdID=1446 Rev= 0.00
    S: Manufacturer=Qualcomm, Incorporated
    S: Product=USB MMC Storage
    S: SerialNumber=ÿÿÿÿÿÿÿÿÿÿÿÿ
    C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
    E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
    E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

    Não sei para onde prosseguir para solucionar o problema. Tu alguma ideia do que possa ser?
    Agradeço desde já.

    ResponderExcluir
    Respostas
    1. Parece que ele não fez o modeswitch.

      Qual versão do openwrt você usa? Tentou depois de reiniciar o roteador?

      Excluir
    2. Luiz, obrigado pelo retorno!

      Acabei vendendo o WDR4300 e recebi essa semana um WR1043ND. Segui seu tutorial com o 1043 e tudo funcionou perfeitamente!

      Valeu de novo, abraço!

      Excluir
  16. Fala aí, tudo bem?

    Configurei um modem D-Link DWM-157 no OpenWRT porém acontece algo muito estranho. No windows consigo conectar normalmente. No OpenWRT, aparece a seguinte mensagem: Failed (NO CARRIER). O que será que pode ser?

    root@OpenWrt:~# dmesg | grep USB
    [ 4.640000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [ 4.660000] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1
    [ 4.690000] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00
    [ 4.690000] hub 1-0:1.0: USB hub found
    [ 5.020000] usb 1-1: new high-speed USB device number 2 using ehci-platform
    [ 5.170000] hub 1-1:1.0: USB hub found
    [ 5.460000] usb 1-1.1: new high-speed USB device number 3 using ehci-platform
    [ 11.290000] usbserial: USB Serial support registered for generic
    [ 11.580000] usbserial: USB Serial support registered for GSM modem (1-port)
    [ 136.520000] usb 1-1.1: USB disconnect, device number 3
    [ 137.270000] usb 1-1.1: new high-speed USB device number 4 using ehci-platform
    [ 137.400000] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
    [ 137.420000] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
    [ 137.440000] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
    [ 137.460000] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3

    Segue o log completo:

    Mon May 25 20:46:20 2015 daemon.notice netifd: Interface 'Claro' is setting up now
    Mon May 25 20:46:22 2015 daemon.notice pppd[1809]: pppd 2.4.7 started by root, uid 0
    Mon May 25 20:46:23 2015 local2.info chat[1812]: abort on (BUSY)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: abort on (NO CARRIER)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: abort on (ERROR)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: report (CONNECT)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: timeout set to 10 seconds
    Mon May 25 20:46:23 2015 local2.info chat[1812]: send (AT&F^M)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: expect (OK)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: AT&F^M^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: OK
    Mon May 25 20:46:23 2015 local2.info chat[1812]: -- got it
    Mon May 25 20:46:23 2015 local2.info chat[1812]: send (ATE1^M)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: expect (OK)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: ^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: ATE1^M^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: OK
    Mon May 25 20:46:23 2015 local2.info chat[1812]: -- got it
    Mon May 25 20:46:23 2015 local2.info chat[1812]: send (AT+CGDCONT=1,"IP","claro.com.br"^M)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: timeout set to 30 seconds
    Mon May 25 20:46:23 2015 local2.info chat[1812]: expect (OK)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: ^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: AT+CGDCONT=1,"IP","claro.com.br"^M^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: OK
    Mon May 25 20:46:23 2015 local2.info chat[1812]: -- got it
    Mon May 25 20:46:23 2015 local2.info chat[1812]: send (ATD*99***1#^M)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: expect (CONNECT)
    Mon May 25 20:46:23 2015 local2.info chat[1812]: ^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: ATD*99***1#^M^M
    Mon May 25 20:46:23 2015 local2.info chat[1812]: NO CARRIER
    Mon May 25 20:46:23 2015 local2.info chat[1812]: -- failed
    Mon May 25 20:46:23 2015 local2.info chat[1812]: Failed (NO CARRIER)
    Mon May 25 20:46:23 2015 daemon.err pppd[1809]: Connect script failed
    Mon May 25 20:46:24 2015 daemon.info pppd[1809]: Exit.
    Mon May 25 20:46:24 2015 daemon.notice netifd: Interface 'Claro' is now down



    Obrigado!!

    ResponderExcluir
    Respostas
    1. Descobri o problema!! Usei os dois comandos abaixo e descobri que estava usando a "ttyUSB" errada.

      Comando para exibir informações sobre o modem:
      gcom info -d /dev/ttyUSBx

      Comando para verificar o sinal do modem:
      gcom -d /dev/ttyUSBx

      Onde x é o numero da porta desejada.

      Sucesso!

      Excluir
    2. Ótimo. É um pouco confuso mesmo esses modems. O seu cria 4 seriais. Normalmente a porta de comunicação é a primeira mas o gcom é a forma mais segura de descobrir.

      Excluir
  17. Olá Luiz,

    Pode me ajudar?
    Qual firmware consigo utilizar no modelo Multilaser RE072 3G 150Mbps

    ResponderExcluir
    Respostas
    1. Andreza, multilaser não faz roteador. Só compra de outros e coloca a marca. Se descobrir o fabricante (tplink?) e o modelo original, podemos tentar a adaptação.

      Já fizeram isto para o re027 e re039 http://wiki.openwrt.org/toh/multilaser/re027

      Excluir
  18. Este comentário foi removido pelo autor.

    ResponderExcluir
  19. Luiz está dando essa msg.. não sei o que mais fazer..

    daemon.notice netifd: Interface 'Modem' is now down
    Sat Mar 18 10:26:34 2017 daemon.notice netifd: Interface 'Modem' is setting up now
    Sat Mar 18 10:26:36 2017 daemon.notice pppd[2304]: pppd 2.4.7 started by root, uid 0
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: abort on (BUSY)
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: abort on (NO CARRIER)
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: abort on (ERROR)
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: report (CONNECT)
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: timeout set to 10 seconds
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: send (AT&F^M)
    Sat Mar 18 10:26:37 2017 local2.info chat[2312]: expect (OK)
    Sat Mar 18 10:26:47 2017 local2.info chat[2312]: alarm
    Sat Mar 18 10:26:47 2017 local2.info chat[2312]: Failed
    Sat Mar 18 10:26:47 2017 daemon.err pppd[2304]: Connect script failed
    Sat Mar 18 10:26:48 2017 daemon.info pppd[2304]: Exit.

    ResponderExcluir
    Respostas
    1. O modem não parece estar respondendo. O comando AT&F significa "limpe as configurações" (^M é um enter). Faz parte da preparação do modem, antes de qualquer verificação do sinal. Por não responder OK, depois de 10s, ele abortou.

      Esse modem funciona em Linux? É QMI? Está com o dispositivo aparecendo em /dev e está configurado corretamente? É um problema em uma fase muito inicial para diagnosticar diretamente. Só descarte problemas da operadora.

      Excluir
    2. Aparentemente sim, O modelo dele e o HUAWEI E3272

      Excluir
    3. No Windows ele ta OK.

      Excluir
  20. root@OpenWrt:~# gcom info -d /dev/ttyS0

    ##### Wireless WAN Modem Configuration #####
    Product text:
    ====

    ====
    Manufacturer: IMEI and Serial Number: comgt 18:05:03 -> -- Error Report --
    comgt 18:05:03 -> ----> ^
    comgt 18:05:03 -> Error @776, line 45, String is shorter than second argument. (7)

    Quando dou esse comando da o erro

    ResponderExcluir
    Respostas
    1. Rafael,

      Busquei a msg de erro e achei algo interessante:

      http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=817

      Acho que seu modem talvez ainda não seja reconhecido pelo modeswitch desta versão.
      Pode tentar usar a versão nova do LEDE (sucessor do OpenWRT, que pode ainda voltar a se chamar OpenWRT) ou tentar resolver manualmente.

      No fórum, usaram este comando:

      echo "07d1 7e11" > /sys/bus/usb-serial/drivers/option1/new_id

      Claro, troque as informações pelo vendor/product id que podem ser obtidos com um lsusb (pacote usbutils).

      Excluir
  21. Luizluca, estou usando um dongle da Tim modelo ZTE MF79s, que está configurado como uma interface ethernet, instalei apenas os módulos kmod-usb-net-rndis e usb-modeswitch.

    Pelo dmesg vi que o modem foi detectado como eth2, então configurei ele dentro do /etc/config/network como interface wan2, ifname eth2 e proto dhcp, também configurei a wan2 na zona wan do firewall.

    A interface está recebendo IP do modem, consigo pingar o gateway, consigo acessar a página de configuração do Modem, mas quando tento acessar a internet não funciona, o modem funciona normalmente plugado direto no computador. Já revi toda a configuração e não consegui descobrir o que estou errando, consegue me dar uma luz?

    Obrigado

    ResponderExcluir
    Respostas
    1. Caro Pobre,


      Você aparentemente fez tudo certo. Acho que o usb-modeswitch talvez não se aplique ao seu caso. Mas você, com o modem em mãos, tem mais condição de dizer. Quando aparecer a eth2, não precisa de mais pacotes.

      Parece que está tudo funcionando exceto roteamento. Por acaso você configurou a zona do firewall da wan2 para wan? Se não especificou uma zona, vai se comportar como você mencionou.

      Excluir
  22. Luiz,

    Consegui resolver, realizei um traceroute do meu pc, e percebi que os pacotes estavam tentando sair pela rota WAN mesmo ela estando desconectada.
    Então percebi que o OpenWrt não estava criando uma rota default para o Modem 3G, apesar de estar tudo configurado, fuçando em alguns foruns gringos, consegui encontrar um script(https://gist.github.com/andiwand/5b5acc2c4873a0cfbe5eb0123c8fdd16) que resolveu o meu problema, parece ser um bug da versão Openwrt/LEDE que estou usando. Agora está tudo funcionando.
    Obrigado!

    ResponderExcluir
  23. Este comentário foi removido pelo autor.

    ResponderExcluir
    Respostas
    1. Luiz Dias, não editei apenas salver na pasta /etc/hotplug.d/iface/01-default-route e reiniciei o router.

      Excluir
  24. Olá Luiz, Há um jeito de alterar o contador de HOP dos pacotes que saem pela rede 3G, pra que a operadora não perceba que estou fazendo roteamento? Pois parece que eles limitam a banda dos PACOTES roteados.

    Obrigado!!

    ResponderExcluir
    Respostas
    1. Seria mais ou menos isso?
      https://www.linuxtopia.org/Linux_Firewall_iptables/x4799.html

      Você pode colocar a chamada do iptables tanto em /etc/firewall.user como criar um arquivo próprio e incluir como é feito pelo miniupnpd:

      config include 'miniupnpd'
      option type 'script'
      option path '/usr/share/miniupnpd/firewall.include'
      option family 'any'
      option reload '1'

      Mas, se funcionar, já passa o comando mastigado que você usou e também fala o nome do "santo". Sempre é bom conhecer as operadoras pelas suas práticas ilegais (sim, existe a neutralidade da rede).

      Provando que é isso, denúncia, no mínimo, a ANATEL, mas talvez até PROCON ou MP.

      Excluir
    2. Perfeito acho que é isso mesmo que preciso.

      Como já expliquei em uma postagem anterior meu modem (ZTE MF79s) está plugado na USB e sendo reconhecido como ETH2, neste caso ele é o ROUTER 1 e o Archer está como Router 2.

      Se eu tiver entendido bem, os pacotes chegarão no router 2 e diminuirá 1 no TLL, e diminuirá mais 1 no Router 1, então se eu quero simular que ele não está passando por nem um ROUTER eu teria que Incrementar 3 no TTL dos pacotes.

      Exemplo: Digamos que receba um pacote com TTL 64, se eu não fizer nada ele sairá pelo MODEM 3G com um TTL de 62, seu INCREMENTAR 2 ele sairá com o mesmo 64 que entrou parece ser isso que eu preciso.

      Só fico na duvida se ao invés de usar TTL --ttl-inc 2 seja melhor eu padronizar todos os pacotes usando o ttl-set 66.

      Eu acho que a operadora está limitando a REDE pelo fato de com o chip direto no celular os testes marcarem mais 10MB de UP/DOWN e quando coloco no router mal chega nos 5MB, vou fazer os testes e te informar se funcionou.

      Excluir
  25. Olá, será que você poderia me ajudar?
    Estou tentando fazer a conexão com um roteador tl-mr3020 e com um modem dwm-156.
    Fiz todas as configurações, e baixei todos os pacotes necessarios, porem o modem nao conecta
    Fiz um teste com um modem huawey e3272s e ele funciona de primeira assim que conecto ele na porta do roteador, porem o dwm nao funciona.
    Teria alguma configuração diferente para esse tipo de modem?
    Os pacotes que você descreveu no seu post e os pacotes descritos no site da openwrt (https://openwrt.org/docs/guide-user/network/wan/wwan/3gdongle) eu ja instalei todos, teria algo mais a ser feito?

    ResponderExcluir
    Respostas
    1. Tem que ver que tipo de modem ele é. Os mais novos se comportam como uma placa de rede e nem autenticação tem.
      Os mais antigos se apresentavam como modem dial-up USB. Neste meio tempo, existiram alguns que se apresentavam como um CD-ROM virtual com o driver (para windows) e precisaram ser mudados de modo para se tornarem um modem (usb-modeswitch).

      Eu primeiro testaria em um Linux Desktop para ver como ele se comporta e se funciona. É mais fácil do que ficar instalando pacotes no roteador para investigar pois o espaço é limitado. No OpenWrt, sempre tente na última versão pois o problema já pode estar resolvido.

      Excluir