Não é possível abrir a porta / dev / ttyUSB0

1

Eu tenho dois microcontroladores PICAXE. Na verdade, eu tenho Ubuntu 14.04 LTS (Trusty Tahr).

Eu tive que baixar o aplicativo LinAXEpad e instalar essas bibliotecas:

sudo apt-get install libgtk2.0-0: libcairo2 i386: i386 libpango1.0-0: libgdk-pixbuf2.0-0 i386: i386 libstdc ++ 6: i386

Eu segui estas instruções:

4.0) Instalação do Linux

O cabo AXE027 contém um circuito eletrônico interno, baseado em um chip conversor USB-serial FTDI. Este chip já é suportado pela instalação padrão do Linux, através do driver do kernel chamado "ftdi_sio" (kernel 2.4.20 e posterior). Portanto, nenhum download de driver é necessário.

No entanto, como muitos produtos diferentes de muitas empresas diferentes usam o mesmo chip FTDI, cada produto recebe um número único de 'identificação do produto' para fins de identificação.

Este ID único do produto é programado no chip dentro do cabo, de forma que quando o cabo é conectado ao computador, ele pode ser identificado de forma exclusiva.

O ID exclusivo do produto para o cabo USB AXE027 é 0xbd90. O ID do fornecedor é 0x0403. No entanto, o driver padrão, ftdi_sio, como instalado pela maioria das distribuições Linux, reconhece apenas alguns ids de produto (padrão) para o chip FTDI (por exemplo, 0x6001). Portanto, é necessário "corrigir" o driver para que ele ofereça suporte ao ID do produto 0xDB90 do AXE027.

Todas as três opções são verificadas quanto à operação correta da mesma maneira simples - depois de inserir o cabo AXE027 na porta USB, o arquivo de link simbólico chamado / dev / ttyUSB0 deve aparecer automaticamente dentro do sistema operacional.

Observe que qualquer aplicativo que use o cabo AXE027 precisa endereçar este link simbólico USB:

/ dev / ttyUSB0

O que não é o mesmo que o link de porta serial tradicional (por exemplo, "COM1"):

/ dev / ttyS0

4.2) Linux Patch Option 2 (recomendado) Crie uma nova regra do udev, para que a regra de modprobe seja aplicada automaticamente toda vez que o computador for inicializado. Crie um novo arquivo (por exemplo, usando o KWrite, gedit ou editor de texto similar) chamado:

/etc/udev/rules.d/99-axe027.rules

Para fazer isso, abra um console do Terminal e digite:

sudo kwrite /etc/udev/rules.d/99-axe027.rules

Em seguida, digite o seguinte texto (note que as duas últimas linhas abaixo devem ser inseridas como uma linha longa) e salve o arquivo.

# /etc/udev/rules.d/99-axe027.rules
# contains axe027 udev rule to patch default
# FTDI product id to AXE027 product id (0xbd90)
SYSFS{idProduct}=="bd90",
SYSFS{idVendor}=="0403",
RUN+="/sbin/modprobe -q ftdi_sio product=0xbd90 vendor=0x0403"

A nova regra será sempre aplicada quando o sistema for inicializado. Para testar imediatamente a nova regra sem reiniciar, abra um console do Terminal e digite:

(código original)

sudo udevcontrol reload_rules

(Meu Código)

sudo udevadm control --reload-rules

Depois, tentei executar o aplicativo LinAXEpad, acessando: VIEW > > OPTIONS (escolha o microcontrolador) e finalmente "clique" no FIRMWARE

Eu tenho isso:

Can't open port /dev/ttyUSB0 (err=2: No such file or directory)

O que posso fazer?

Experimentando com LSUSB : link

Experimentando com o DMESG : link

    
por Falconunknown 17.09.2014 / 07:40

2 respostas

1

dmesg oferece algumas dicas úteis (veja a foto que você postou).

  • Sua regra para udev deve estar incorreta: veja as linhas em que ftdi_sio informa que os parâmetros são desconhecidos / ignorados. Enfim, carregar este módulo tem algum resultado: seu adaptador agora é conhecido como um adaptador serial e o ttyUSB0 foi criado, mas diz-se que o driver é experimental e você deve pedir ao [email protected] para adicionar seu adaptador a um driver correto. faria isso em seu lugar, é provavelmente o melhor caminho a percorrer).

Agora, sobre a permissão negada, você pode:

  • liste a pasta /dev com ls -l para encontrar o grupo que possui o ttyUSB0 . (provavelmente tty ). Ele deve ter rw de permissão.
  • faz com que o usuário execute seu membro do aplicativo desse grupo, por exemplo, com sudo adduser theuser thegroup . Deve corrigir o problema de permissão.

E BTW, quando a saída de um comando como modprobe -c é muito grande, você pode canalizá-lo para menos ou para grep:

sudo modprobe -c | less

sudo modprobe -c | grep ftdi_sio
    
por Pyrophorus 18.09.2014 / 10:18
1

Em kernels recentes (definitivamente com 14.04 LTS), o módulo ftdi_sio não aceita mais as opções de produto e fornecedor. Em vez disso, você precisa gravar manualmente o valor em /sys/bus/usb-serial/drivers/ftdi_sdio/new_id . Você pode automatizá-lo usando a seguinte regra do udev:

ACTION=add, ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bd90", RUN+="/sbin/modprobe", RUN+="/bin/sh -c 'echo 0403 bd90 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
  1. Crie um novo arquivo de regras /etc/udev/rules.d/99-axe027.rules com a linha acima

  2. Recarregue as regras executando sudo udevadm control --reload . Ou reinicie.

  3. Desconecte o dispositivo se estiver conectado.

  4. Conecte o dispositivo.

por Stephen Irons 04.11.2014 / 07:32