A história não é tão importante para esta pergunta, mas aqui está: o modem GPRS está bloqueado no software do fornecedor (não funciona, se não receber uma resposta correta para um "desafio" imprime de vez em quando). Para usá-lo no Linux, alguém fez a engenharia reversa / desmontou esse código, e agora há um programa parecido com o daemon que procura o dispositivo para aparecer e então começa a enviar comandos especiais para ele. A origem deste programa foi perdida, por isso não podemos reescrevê-lo.
Se o daemon for executado antes de o NetworkManager começar a se conectar, o NetworkManager falhará devido a algum conflito de acesso. Se o daemon for executado depois que a conexão PPP tiver sido estabelecida, a conexão será interrompida (provavelmente porque ela interfere na fase inicial, talvez). Mas descobri que, se o daemon for iniciado e, em seguida, o pppd for executado manualmente, tudo funciona bem.
Mas as pessoas usam o NetworkManager.
Como alguém faz o NetworkManager executar outro programa antes do pppd para uma conexão específica? (Eu conheço um hack para fazer isso em qualquer conexão: simplesmente substitua o binário do pppd por um wrapper! Talvez nem seja tão ruim, exceto invadir o pacote de uma distribuição, o que significa que nosso wrapper seria substituído por um upgrade de pacote. )
Uma pergunta mais simples: Como alguém faz o NetworkManager usar outro programa em vez do pppd padrão (sem substituir o pppd em sua localização padrão)?
Uma pergunta mais difícil: como fazer o NetworkManager executar este programa especial se for usar algum modelo definido de modem GPRS?