Plasma NM: “tethering”
Duas semanas atrás o Alex Fiestas (do time de Solid da Espanha) me contactou para que pudéssemos implementar umas das funcionalidades mais requisitadas no Bluedevil: tethering (uso de um dispositivo bluetooth, geralmente um celular, para acessar Internet sem usar fios). Ano passado durante o Sprint (encontro de desenvolvedores) do Solid (camada de abstração de hardware do KDE) em Madri ele e o Will Stephenson tentaram resolver esse problema (eu também ajudei), mas não conseguimos fazer funcionar de uma forma realmente fácil para os usuários. Bem, estamos próximos disso agora…
Suporte para tethering tem que ser implementado no Bluedevil e no Plasma NM e eles têm que cooperar para registrar a conexão no NetworkManager. Após um tempo pesquisando e algumas respostas do pessoal do NetworkManager nós conseguimos as informações que precisávamos. A maior parte das modificações tiveram que ser feitas no Plasma NM e no Solid, a parte do Bluedevil já estava quase totalmente pronta.
Para encurtar a história aqui está o screenshot de uma conexão tethering no Plasma NM:
- Estou usando um ícone de bluetooth para a interface de rede, o que é lógico já que o NetworkManager identifica a interface como bluetooth. O problema é que ele se confunde com o ícone do Bluedevil. Talvez alguém possa criar um novo ícone pra mim, algum voluntário?
- O “Unknown” no nome da conexão se refere ao tipo de tecnologia de acesso desconhecido. Parece que o ModemManager não consegue obter esta informação do celular. Eu vou tentar ver se consigo resolver isso. Atualização: problema resolvido
- Nome de sistema (“System Name”) funciona com a conexão serial (ppp)!
Isso era um problema antigo no Plasma NM, o método usual do NM para obter o nome de sistema retornava o nome do dispositivo serial (/dev/ttyACM0, /dev/ttyUSB0, etc). O gráfico de tráfego também não funcionava pela mesma razão. Eu tinha adicionado uma “marreta” para forçar o Plasma NM a sempre usar ppp0 como nome de interface para todos os dispositivos seriais (modems, celular Gsm/Cdma, dispositivos bluetooth). Bem, agora não preciso mais desta “marreta” já que o NM-0.8.2 pode me fornecer essa informação. Infelizmente o suporte para isso só virá no KDE SC 4.7.0. - Pela mesma razão que a tecnologia de acesso não é reportada o nome da operadora e a força do sinal também não são. O estado de habilitado também vem do ModemManager. Se não conseguir resolver esse problema no futuro eu vou retirar essa informações para dispositivos bluetooth. Atualização: problema resolvido
- Sim, a conexão está meio lenta. Aqui onde moro ela vai no máximo a 260 kbps em 3G ( 220 kbps em 2G) na melhor das hipóteses. Nem vale à pena pegar um plano mais rápido já que a rede das operadoras realmente não acompanham a velocidade ou os planos são caros demais.
- Suporte no Solid e no Plasma NM para bluetooth de celulares Cdma.
- Suporte a PAN (Personal Area Network) para celulares Gsm e Cdma. Vai levar um tempo até eu implementar esses dois primeiros ítens porque meu celular não suporta nem Cdma nem PAN. Atualização: suporte a NAP para celulares Gsm implementado
Na realidade o nome do serviço que o celular tem que suportar é Network Access Point (NAP) e não PAN. Ou PAN sempre vem com o NAP, eu não estou certo. - Sem o patch do Solid, que irá entrar no 4.7.0, o Plasma NM reconhece interfaces bluetooth como gsm. A consequência disto é que o Plasma NM mistura conexões gsm e bluetooth mas o NM se recusa a usar uma conexão gsm pura com uma interface bluetooth. Com o patch o Plasma NM é capaz de distringuir conexões gsm e bluetooth. Por exemplo, eu registrei uma conexão gsm e outra conexão bluetooth e somente a conexão bluetooth é mostrada nos screenshots acima.
- Atualização: outra consequência é que os detalhes gsm da conexão (nome da operadora, qualidade do sinal, etc) não estarão disponíveis sem o patch do Solid.
- Não, por enquanto não é possível usar a mesma conexão com o mesmo celular conectado via USB e bluetooth. Você tem que criar uma conexão para quando o celular estiver conectado via USB e outra conexão para quando o celular estiver conectado via bluetooth.
- A interface de rede bluetooth sempre é mostrada quando a controladora bluetooth está ativa e existe uma conexão bluetooth registrada, mesmo quando o bluetooth do celular está desligado. É assim que o NM funciona.
- Algumas linhas de código no Bluedevil para chamar o Plasma NM para registrar a conexão bluetooth logo após parear o dispositivo bluetooth.
- Mais testes.
Para os bravos que querem testar o patch para o Solid:
- Baixe o patch para o 4.6.2 daqui: http://git.reviewboard.kde.org/r/101172
- Recompile o kdelibs e o kde-workspace. Recompilar o kdelibs é necessário por causa das mudanças na compatibilidade binária. Eu tive alguns crashes no kded4 até que recompilei o kdelibs.
- Recompile o Plasma NM:
- git clone git://anongit.kde.org/netwokmanagement
- mkdir networkmanagement/build
- cd networkmanagement/build
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
- make
- make install
- Execute: $(kde4-config –path exe –locate networkmanagement_configshell) create –type bluetooth –specific-args “00:11:22:33:44:55 dun”
- Mude 00:11:22:33:44:55 para o endereço de hardware bluetooth do seu celular. Você pode obtê-lo no Bluedevil. Atualização: mode dun para nap para acrescentar uma conexão nap.
- Em alguns segundos a caixa de diálogo passo-a-passo de criação de conexões via celular do Plasma NM irá aparecer para que você possa terminar de registrar a conexão.
- Depois de registrar a conexão você pode ir na tela do Plasma NM e a conexão deve estar lá. Apenas clique na conexão para se conectar à Internet.



