Ubuntu Celular e Modem 4G
Sem cabo de rede e sem Wi-Fi funcionando, o celular salva o dia: ligado ao computador por um cabo USB, ele empresta a internet dos dados móveis. Nesta aula você usa o celular (Android ou iPhone) como "placa de rede" e aprende a conectar um modem 4G (o modem USB ou o modem interno de alguns notebooks) com o ModemManager.
- As formas de usar a internet do celular no computador, e qual escolher.
- Ligar a ancoragem USB no Android e no iPhone, e o que o Ubuntu mostra.
- Avisar ao Ubuntu que a conexão é limitada (plano de dados).
- Listar modems com
mmclie criar a conexão comnmcli. - Onde achar o APN certo da sua operadora.
O laboratório do guia é uma máquina virtual: não dá para espetar um celular nem um modem de verdade nele. Por isso:
- Reais: o
mmcli -Lsem modem, o serviço ModemManager, a criação da conexão comnmcli(com as mensagens de erro reais) e o comportamento do NetworkManager quando uma placa de rede USB aparece. - Simulado: o "celular" da ancoragem foi uma placa de rede virtual com o mesmo tipo de nome que o Ubuntu dá a um celular USB. O NetworkManager reagiu de verdade a ela.
- Ilustrativo: tudo que depende do celular ou do modem físico (o
mmclicom um modem, as telas do celular). Está marcado no texto.
Internet do celular no computador: as opções
| Forma | Como funciona | Bom para |
|---|---|---|
| Ancoragem USB (USB tethering) | O celular, ligado pelo cabo, vira uma placa de rede para o computador. | Quando o Wi-Fi do computador não funciona. Não precisa de driver, e o cabo ainda carrega o celular. |
| Roteador Wi-Fi do celular (hotspot, "ponto de acesso") | O celular cria uma rede Wi-Fi; o computador conecta como em qualquer Wi-Fi. | Quando o Wi-Fi do computador funciona. Veja Wi-Fi. |
| Modem 4G/5G (WWAN) | Um aparelho com chip de operadora: pendrive USB ou placa interna do notebook. | Uso frequente fora de casa, sem depender do celular. |
Duas palavras aparecem o tempo todo. Ancoragem é o nome que o Android em português dá a "compartilhar a internet do celular". WWAN (wireless wide area network) é como o Linux chama a rede de celular, a "rede sem fio de longa distância".
Ancoragem USB
No Android
- Ligue o celular ao computador com um cabo USB de dados (alguns cabos baratos só carregam).
- No celular, abra Configurações → Rede e internet → Ponto de acesso e tethering e ligue Tethering USB (ou "Ancoragem USB"). O caminho muda conforme a marca; nos Samsung, por exemplo: Conexões → Roteador Wi-Fi e ancoragem → Ancoragem USB. A opção só fica disponível com o cabo ligado.
- Pronto. No computador não há nada a fazer.
No iPhone
- No iPhone, abra Ajustes → Acesso Pessoal e ligue Permitir Que Outros Acessem.
- Ligue o cabo. Na primeira vez, o iPhone pergunta se deve Confiar neste computador: toque em Confiar e digite o código do iPhone.
- No computador, também não há nada a fazer: o Ubuntu já traz o
usbmuxd(o programa que conversa com o iPhone) e o driveripheth.
O que o Ubuntu mostra
Para o Ubuntu, o celular é uma placa de rede com cabo. O NetworkManager vê a placa nova, cria sozinho a conexão Conexão cabeada 1 e pede um IP ao celular. No menu do GNOME, aparece como rede cabeada, não como Wi-Fi.
Saídas reais do NetworkManager, com o "celular" simulado do laboratório:
$ nmcli device status DEVICE TYPE STATE CONNECTION enp0s3 ethernet conectado netplan-enp0s3 enx02a1b2c3d4e5 ethernet conectado Conexão cabeada 1 « o celular, conectado sozinho lo loopback connected (externally) lo wlan0 wifi desconectado -- p2p-dev-wlan0 wifi-p2p desconectado -- veth-lab ethernet não gerenciável -- « peça do laboratório hwsim0 unknown não gerenciável -- « peça do laboratório $ nmcli connection show NAME UUID TYPE DEVICE netplan-enp0s3 1eef7e45-3b9d-3043-bee3-fc5925c90273 ethernet enp0s3 Conexão cabeada 1 05545b3a-835d-3353-a5d1-8c7aedd17923 ethernet enx02a1b2c3d4e5 lo 76ccc794-03c8-4624-a379-05002bb253bd loopback lo
O nome enx02a1b2c3d4e5 segue a regra do Ubuntu para placas de rede USB: en (ethernet), x e o endereço físico da placa sem os dois-pontos. O seu celular vai gerar outro nome, mas sempre começando com enx. (O endereço do laboratório, 02:a1:b2:c3:d4:e5, é fictício.)
$ ip -br a show enx02a1b2c3d4e5 enx02a1b2c3d4e5@if10 UP 192.168.42.135/24 fe80::23ee:89bc:2fce:48e8/64 « IP emprestado pelo "celular"
O @if10 no nome é coisa da placa virtual do laboratório; com um celular de verdade aparece só enx…. A faixa de IP também depende do celular.
Cabo, celular e Wi-Fi ao mesmo tempo: quem ganha?
Se mais de uma conexão estiver ativa, o Ubuntu usa a de menor métrica (um "custo": quanto menor, mais preferida). Saída real das rotas, com o cabo e o celular ligados:
$ ip route default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100 « cabo: métrica 100, ganha default via 192.168.42.129 dev enx02a1b2c3d4e5 proto dhcp src 192.168.42.135 metric 101 « celular: reserva 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 10.200.0.0/30 dev veth-lab proto kernel scope link src 10.200.0.1 192.168.42.0/24 dev enx02a1b2c3d4e5 proto kernel scope link src 192.168.42.135 metric 101
Por padrão o NetworkManager dá métrica 100 ao cabo, 600 ao Wi-Fi e 700 ao modem. Como o celular por USB é "cabo", ele ganha do Wi-Fi. Para usar só o celular, desligue as outras conexões (nmcli connection down NOME). Para entender rotas e o default, veja Conceitos de Rede.
Avise que a conexão é limitada
Dados móveis acabam. Uma conexão marcada como limitada (metered) faz o Ubuntu adiar downloads grandes, como atualizações automáticas. Veja a coluna METERED (saída real, no cabo):
$ nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN METERED conectado completa missing habilitado missing habilitado não (adivinhado)
não (adivinhado) = "não limitada, por palpite". Celulares Android costumam avisar que são limitados, e aí aparece sim (adivinhado). Para garantir:
$ nmcli connection modify "Conexão cabeada 1" connection.metered yes $ nmcli connection up "Conexão cabeada 1"
Pelo mouse: Configurações → Rede, engrenagem da conexão, opção Conexão limitada (ou "tráfego de dados limitado").
Modem 4G/5G: ModemManager
Modems de celular são controlados pelo ModemManager, um serviço que já vem ligado no Ubuntu Desktop. Ele conversa com o modem (chip, PIN, sinal, operadora); o NetworkManager usa o que ele descobre para conectar. Saídas reais:
$ systemctl is-active ModemManager active $ mmcli --version mmcli 1.25.95 Copyright (2011 - 2023) Aleksander Morgado License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Listar os modems: mmcli -L
mmcli é o ModemManager command line interface; -L lista os modems. Sem modem (saída real):
$ mmcli -L No modems were found $ echo $? 0
No modems were found = "nenhum modem foi encontrado". O código 0 mostra que não é um erro: a lista só está vazia. Com um modem ligado, aparece algo assim (ilustrativo):
$ mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Fabricante] Modem LTE « o número no fim (0) identifica o modem
Para ver o estado do modem número 0, use mmcli -m 0. Trecho ilustrativo, com as linhas que mais importam:
$ mmcli -m 0
--------------------------------
Hardware | manufacturer: Fabricante
| model: Modem LTE
--------------------------------
Status | lock: sim-pin2
| state: registered « registrado na operadora: pronto para conectar
| power state: on
| signal quality: 72% (recent)
--------------------------------
3GPP | operator name: Operadora
| registration: home
state | Significado |
|---|---|
locked | O chip pede o PIN (veja abaixo). |
registered | Achou a operadora e está pronto para conectar. |
connected | Conectado: a internet está passando pelo modem. |
failed | Problema com o chip (ausente, mal encaixado ou bloqueado). |
Onde achar o APN certo
O APN (Access Point Name, "nome do ponto de acesso") é o "endereço" que a operadora usa para liberar a internet do chip. Ele muda de operadora para operadora, às vezes de plano para plano, e pode mudar com o tempo. Por isso, em vez de decorar uma lista, pegue o valor numa fonte confiável:
- No próprio celular, com o chip que vai para o modem. O celular já está configurado e mostra o APN que usa:
- Android: Configurações → Rede e internet → Chips (ou Rede móvel) → Nomes dos pontos de acesso. Nos Samsung: Conexões → Redes móveis → Nomes de Ponto de Acesso. Toque no item marcado: o campo APN é o valor; Nome de usuário e Senha, se estiverem preenchidos, também vão no comando.
- iPhone: Ajustes → Celular → Rede de Dados Celular, campo APN em "Dados Celulares". Se esse menu não aparece, a operadora configura o iPhone sozinha: use a próxima opção.
- No site ou no atendimento da operadora. Procure por "APN" na página de ajuda, ou pergunte no atendimento qual é o APN de internet do seu plano.
O APN tem cara de endereço de site (palavras separadas por pontos). Copie letra por letra: um ponto a mais e a operadora não deixa conectar. Nos exemplos desta aula, SEU_APN marca o lugar onde vai o valor que você achou.
Criar a conexão: nmcli connection add type gsm
- nmcli connection add
- Crie uma conexão salva nova.
- type gsm
- Do tipo modem de celular (GSM é a família das redes 2G a 5G).
- ifname '*'
- Em qualquer modem que aparecer. As aspas são obrigatórias: sem elas, o shell troca o
*pelos nomes dos arquivos da pasta (veja Curingas). - con-name Chip4G
- O nome da conexão, à sua escolha.
- apn SEU_APN
- O APN da operadora.
$ nmcli connection add type gsm ifname '*' con-name Chip4G apn SEU_APN A conexão “Chip4G” (6c6cf4e8-1b1f-4343-9be0-cd58634272bd) foi adicionada com sucesso. $ nmcli connection show NAME UUID TYPE DEVICE Conexão cabeada 1 05545b3a-835d-3353-a5d1-8c7aedd17923 ethernet enx02a1b2c3d4e5 netplan-enp0s3 1eef7e45-3b9d-3043-bee3-fc5925c90273 ethernet enp0s3 lo 76ccc794-03c8-4624-a379-05002bb253bd loopback lo Chip4G 6c6cf4e8-1b1f-4343-9be0-cd58634272bd gsm -- « tipo gsm, ainda sem modem $ nmcli -f connection.id,connection.type,connection.interface-name,gsm.apn,connection.autoconnect connection show Chip4G connection.id: Chip4G connection.type: gsm connection.interface-name: -- gsm.apn: "SEU_APN" connection.autoconnect: sim « conecta sozinha quando o modem aparecer
Se a operadora pede usuário e senha, ou se o chip tem PIN, acrescente ao add (ou depois, com modify):
$ nmcli connection modify Chip4G gsm.username USUARIO gsm.password SENHA $ nmcli connection modify Chip4G gsm.pin 1234
Com o modem ligado e registrado, ative (ilustrativo):
$ nmcli connection up Chip4G Conexão ativada com sucesso (caminho D-Bus ativo: /org/freedesktop/NetworkManager/ActiveConnection/3)
Sem modem, a mensagem é esta (saída real):
$ nmcli connection up Chip4G Erro: Ativação da conexão falhou: No suitable device found for this connection (device lo not available because profile is not compatible with device (connection type is not "loopback")).
"Nenhum dispositivo adequado encontrado para esta conexão". A parte entre parênteses só conta que ele testou a placa lo e ela não serve. Em resumo: não há modem.
Pelo mouse, quando há um modem, as Configurações ganham uma seção de rede móvel, e o menu do sistema mostra a conexão do modem, como no Wi-Fi (ilustrativo: o laboratório não tinha modem).
Modem USB que vira pendrive: usb_modeswitch
Muitos modems USB chegam disfarçados de "CD" ou pendrive, com o programa de instalação para Windows. O pacote usb-modeswitch, que vem instalado no Ubuntu Desktop, troca o modem para o modo "modem" sozinho alguns segundos depois de espetar. Se o mmcli -L continuar vazio, rode lsusb: se o aparelho aparece como "Mass Storage" (armazenamento), espere um pouco ou tente outra porta USB; alguns modelos muito novos ou raros não são reconhecidos.
E no Ubuntu Server?
A ancoragem USB funciona do mesmo jeito: o celular vira uma placa enx…. Mas o servidor não cria a conexão sozinho, como o NetworkManager faz no desktop. Descubra o nome com ip -br link e acrescente a placa no Netplan com dhcp4: true, como em Configurar a Rede. Modems 4G no servidor dão mais trabalho: o Netplan só configura modems (a seção modems:) através do NetworkManager e do ModemManager, que o Ubuntu Server não traz instalados. Para estudar, o celular por USB é bem mais simples.
Formas diferentes de ter internet sem cabo de rede
| Situação | Use | Precisa de driver? |
|---|---|---|
| Wi-Fi do computador funciona | Wi-Fi da casa, ou roteador Wi-Fi do celular | Não |
| Wi-Fi do computador não funciona | Ancoragem USB do celular | Não (já vem no Ubuntu) |
| Uso frequente fora de casa | Modem 4G com chip próprio | Geralmente não; o ModemManager reconhece a maioria |
| Durante a instalação, sem Wi-Fi reconhecido | Ancoragem USB: o instalador a vê como cabo | Não (veja Instalação) |
Quando não funciona
O que aconteceu: o celular não detectou um computador no cabo. Ou o cabo é só de carga, ou o celular está no modo "só carregar".
Como resolver: use outro cabo (de preferência o original) e, na notificação USB do Android, escolha "Transferência de arquivos" ou "Ancoragem USB".
O que aconteceu: o celular está sem dados móveis (sem sinal, sem crédito, dados desligados) ou a ancoragem foi desligada.
Como confirmar: abra um site no próprio celular. Rode nmcli device status e veja o estado da placa enx….
Como resolver: ligue os dados móveis, desligue e ligue a ancoragem, e reconecte com nmcli connection up "Conexão cabeada 1".
$ nmcli connection add type gsm ifname * con-name Chip4G apn SEU_APN Erro: <definição>.<propriedade> “Documents” inválida.
O que aconteceu: saída real. O * sem aspas foi trocado pelo shell pelos nomes das pastas da pasta pessoal (aqui, Documents), e o nmcli recebeu palavras que não entende.
Como resolver: ponha o asterisco entre aspas: ifname '*'.
O que aconteceu: o modem ainda está no modo "pendrive", não é suportado, ou o ModemManager está parado.
Como confirmar: systemctl is-active ModemManager (deve dizer active) e lsusb (o modem aparece? como modem ou como armazenamento?).
Como resolver: espere alguns segundos (o usb_modeswitch trabalha sozinho), troque de porta, ou ligue o serviço com sudo systemctl enable --now ModemManager.
O que aconteceu: quase sempre é o APN errado: a operadora aceita o chip, mas não libera os dados.
Como resolver: confira o APN no celular ou com a operadora (Onde achar o APN) e corrija: nmcli connection modify Chip4G gsm.apn SEU_APN, depois nmcli connection up Chip4G.
Referência
| Comando | Faz |
|---|---|
nmcli device status | Mostra a placa enx… do celular |
nmcli connection modify NOME connection.metered yes | Marca a conexão como limitada |
ip route | Mostra qual saída (métrica menor) está sendo usada |
systemctl is-active ModemManager | Confere se o serviço de modems está rodando |
mmcli -L | Lista os modems |
mmcli -m 0 | Estado do modem 0 (chip, sinal, operadora) |
nmcli connection add type gsm ifname '*' con-name NOME apn SEU_APN | Cria a conexão do modem |
nmcli connection modify NOME gsm.pin 1234 | Grava o PIN do chip |
nmcli connection up NOME | Conecta pelo modem |
nmcli radio wwan on|off | Liga ou desliga o rádio do modem |
Exercícios
1. Listar os modems
Complete para listar os modems que o ModemManager encontrou:
2. Criar a conexão do modem
Complete com o tipo de conexão de modem de celular:
3. Plano de dados
Complete para marcar a conexão do celular como limitada:
4. O celular está ligado por USB com a ancoragem ativa. Como ele aparece no Ubuntu?
5. O modem conecta, mas nenhum site abre. Qual é a causa mais provável?
6. Cabo (métrica 100) e celular por USB (métrica 101) estão conectados. Por onde sai a internet?
Resumo
- Ancoragem USB: ligue no celular; o Ubuntu cria a "Conexão cabeada 1" na placa
enx…sozinho, sem driver. - Marque dados móveis como limitados:
connection.metered yes. - Modems: o ModemManager já vem ligado;
mmcli -Llista,mmcli -m 0mostra o estado. nmcli connection add type gsm ifname '*' con-name Chip4G apn SEU_APN, com o APN tirado do celular ou da operadora.- Conecta mas não navega: confira o APN.