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.

Você vai aprender
  • 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 mmcli e criar a conexão com nmcli.
  • Onde achar o APN certo da sua operadora.
O que é real e o que é ilustrativo nesta aula

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 -L sem modem, o serviço ModemManager, a criação da conexão com nmcli (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 mmcli com um modem, as telas do celular). Está marcado no texto.

Internet do celular no computador: as opções

FormaComo funcionaBom 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

  1. Ligue o celular ao computador com um cabo USB de dados (alguns cabos baratos só carregam).
  2. 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.
  3. Pronto. No computador não há nada a fazer.

No iPhone

  1. No iPhone, abra Ajustes → Acesso Pessoal e ligue Permitir Que Outros Acessem.
  2. Ligue o cabo. Na primeira vez, o iPhone pergunta se deve Confiar neste computador: toque em Confiar e digite o código do iPhone.
  3. 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 driver ipheth.

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
stateSignificado
lockedO chip pede o PIN (veja abaixo).
registeredAchou a operadora e está pronto para conectar.
connectedConectado: a internet está passando pelo modem.
failedProblema 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:

  1. 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.
  2. 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.
Copie exatamente

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çãoUsePrecisa de driver?
Wi-Fi do computador funcionaWi-Fi da casa, ou roteador Wi-Fi do celularNão
Wi-Fi do computador não funcionaAncoragem USB do celularNão (já vem no Ubuntu)
Uso frequente fora de casaModem 4G com chip próprioGeralmente não; o ModemManager reconhece a maioria
Durante a instalação, sem Wi-Fi reconhecidoAncoragem USB: o instalador a vê como caboNão (veja Instalação)

Quando não funciona

A opção de ancoragem USB está cinza no celular

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".

"Conexão cabeada 1" fica "conectando" e não pega IP

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".

"<definição>.<propriedade> … inválida" ao criar o modem
$ 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 '*'.

"No modems were found" com o modem espetado

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 modem conecta mas não navega

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

ComandoFaz
nmcli device statusMostra a placa enx… do celular
nmcli connection modify NOME connection.metered yesMarca a conexão como limitada
ip routeMostra qual saída (métrica menor) está sendo usada
systemctl is-active ModemManagerConfere se o serviço de modems está rodando
mmcli -LLista os modems
mmcli -m 0Estado do modem 0 (chip, sinal, operadora)
nmcli connection add type gsm ifname '*' con-name NOME apn SEU_APNCria a conexão do modem
nmcli connection modify NOME gsm.pin 1234Grava o PIN do chip
nmcli connection up NOMEConecta pelo modem
nmcli radio wwan on|offLiga ou desliga o rádio do modem

Exercícios

1. Listar os modems

Complete para listar os modems que o ModemManager encontrou:

mmcli

2. Criar a conexão do modem

Complete com o tipo de conexão de modem de celular:

nmcli connection add type ifname '*' con-name Chip4G apn SEU_APN

3. Plano de dados

Complete para marcar a conexão do celular como limitada:

nmcli connection modify "Conexão cabeada 1" connection.metered

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 -L lista, mmcli -m 0 mostra 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.