Driver Moschip MCS9865 – Serial Flexport FX2S PCI LP/2 para Linux CentOS

Nestas aventuras no mundo da automação comercial de varejo, novos hardwares para pdv são frequentes, em cada loja nova inaugurada algum novo dispositivo surge e uma nova batalha é traçada para fazer os sistemas legados manterem compatibilidade com estes hardwares.

Usamos o sistema da Zanthus, o Zeus Frente de Loja, nos pdvs da rede de supermercados do qual trabalho, este sistema possui um instalador baseado no CentOS e nele não há módulo adequado para a placa multiserial FlexPort FX2S PCI LP/2 Serial, sendo necessário compilar e instalar como módulo do kernel para viabilizar os uso das seriais no sistema.

Para instalar este módulo, pode-se seguir os passos abaixo:

1- Tenha certeza que a placa serial é mesmo uma Moschip MCS9865, com o comando:

lspci -v

A saída deste comando deve listar informações de todas as placas PCI, procure pela 9865. As informações que você precisa, deverá ser semelhante ao exemplo abaixo:

03:01.0 Serial controller: NetMos Technology Unknown device 9865 (prog-if 02 [16550])
	Subsystem: Unknown device a000:1000
	Flags: bus master, medium devsel, latency 32, IRQ 209
	I/O ports at df00 [size=8]
	Memory at fdeff000 (32-bit, non-prefetchable) [size=4K]
	Memory at fdefe000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [48] Power Management version 2

03:01.1 Serial controller: NetMos Technology Unknown device 9865 (prog-if 02 [16550])
	Subsystem: Unknown device a000:1000
	Flags: bus master, medium devsel, latency 32, IRQ 217
	I/O ports at de00 [size=8]
	Memory at fdefd000 (32-bit, non-prefetchable) [size=4K]
	Memory at fdefc000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [48] Power Management version 2

2- Para compilar o módulo é necessário ter o pacote de desenvolvimento do Kernel, para garantir que o seu ambiente atenda estes requisitos, use o comando que segue:

yum install kernel-devel kernel-headers

3- Baixe o pacote tarball com os fontes do driver, siga o link a seguir e faça o download:

msc9865_linux.tar.gz

4- Agora já poderemos compilar e instalar o módulo MSC9865 para o Kernel, use a sequência de comandos abaixo para descompactar, compilar e instalar:

tar zxvf MCS9865_Linux.tar.gz
cd MCS9865_Linux
make
make install

5- Após reiniciar a placa multiserial deverá funcionar normalmente, entretanto serão criados dispositivos de caractere no sistema de arquivos fora do padrão comum, como /dev/ttyS0 para porta COM1, então se o seu sistema espera por estes endereços para encontrar as portas seriais será necessário criar links simbólicos que apontem para este sistema de arquivo. Supondo que desejamos liberar as portas seriais da placa MCS9865 como portas COM3 e COM4, devemos criar os links como nos exemplos abaixo:

ln -sf /dev/ttyD0 /dev/ttyS2
ln -sf /dev/ttyD1 /dev/ttyS3

6- Após o comando acima, as portas estarão disponíveis como portas 3 e 4 no sistema, entretanto há casos onde o módulo não é iniciado automaticamente, para evitar este problema, podemos configurar para carregar automaticamente o módulo ao iniciar o computador nos níveis inicialização mais usados, o nível 3 (shell com multiusuário) e o nível 5 (X com multiusuário). Para configurar desta forma podemos usar os comandos que seguem:

echo "modprobe mcs9865" >> /etc/init.d/mcs9865
echo "modprobe mcs9865-isa" >> /etc/init.d/mcs9865

7- Acerte a permissão do arquivo criado para permitir a execução dele:

chmod +x /etc/init.d/mcs9865

8- Crie os links simbólicos para iniciar no nível 3 e 5:

ln -s /etc/init.d/mcs9865 /etc/rc.d/rc3.d/Smcs9865 || true
ln -s /etc/init.d/mcs9865 /etc/rc.d/rc5.d/Smcs9865 || true

9- Por fim devemos incluir no rc.local, com os comandos abaixo, as linhas que fazem os links simbólicos para os novos dispositivos criados (no exemplo abaixo as portas serão disponibilizadas no sistema como portas COM3 e COM4):

echo "/bin/ln -sf /dev/ttyD0 /dev/ttyS2" >> /etc/rc.local
echo "/bin/ln -sf /dev/ttyD1 /dev/ttyS3" >> /etc/rc.local
Publicidade

9 comentários em “Driver Moschip MCS9865 – Serial Flexport FX2S PCI LP/2 para Linux CentOS

  1. Consegui assim:
    ln -sf /dev/ttyD0 /dev/ttyS2 – porta 3
    ln -sf /dev/ttyD1 /dev/ttyS3 – porta 4
    ln -sf /dev/ttyD2 /dev/ttyS4 – porta 5
    ln -sf /dev/ttyD3 /dev/ttyS5 – porta 6

    vi/etc/rc.local = 8

    Curtir

  2. Não estou conseguindo fazer funcionar uma NetMos PCI 9835 no CentOS 6.3, ele detecta a placa e seta a serial automaticamente, mas não consigo fazer o scanner funcionar nessa placa. Existe alguma configuração adicional que eu deva reaizar?

    Curtir

    1. Eliseu, provavelmente você já tenha resolvido, mas como eu estava com problemas na config dos comments no qual estavam sendo automaticamente classificados como SPAM só vi teu comentário agora.

      Você pode verificar se o módulo para a placa subiu corretamente com o comando:

      lsmod

      Não testei em nenhum CentOS 6, mas para o 5 tenho usado o driver mais genérico, o MCS9900 ele suporte toda a miscelânea de NetMos atual do mercado.
      Este módulo tu podes pegar diretamente no site do fabricante em http://www.asix.com.tw.

      Se ainda tiver com problemas, posta aqui e vamos conversando.

      Curtir

      1. Oi Gabriel,
        Obrigado pelo retorno.
        Eu já consegui resolver sim, mas o problema nem era de driver, pois funcionou com o driver genérico.
        Para resolver a situação eu precisei editar o /etc/fstab, alterando o parametro “nouser” para “user” na linha de montagem do /.

        “A opção do usuário (user) permite que os usuários normais montem o dispositivo, ao passo que nouser permite apenas ao root montar o dispositivo. nouser é o padrão, que é uma das principais causas de dor de cabeça para os novos usuários Linux. Se você não é capaz de montar o seu cdrom, disquete, partição do Windows, ou algo como um usuário normal, adicione a opção do usuário no /etc/fstab.”
        http://meupinguim.com/entendendo-arquivo-fstab-linux/

        Mesmo utilizando a conta de root, a NetMos PCI 9835 só funcionou no CentOS 6.3 após fazer essa alteração.

        Curtir

  3. Bom dia.
    Gabriel estou utilizando o sistema operacional Ubuntu, como faço a instalação?
    Pois parei no seguinte passo:
    ln -s /etc/init.d/mcs9865 /etc/rc.d/rc3.d/Smcs9865 || true
    ln -s /etc/init.d/mcs9865 /etc/rc.d/rc5.d/Smcs9865 || true
    Ocorre o seguinte erro:
    ln: creating symbolic link `/etc/rc.d/rc3.d/Smcs9865′: No such file or directory

    Curtir

    1. Eduardo, desculpe a demora! Cara no Ubuntu o caminho é diferente, use:

      ln -s /etc/init.d/mcs9865 /etc/rc3.d/99Smcs9865 
      ln -s /etc/init.d/mcs9865 /etc/rc5.d/99Smcs9865
      

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s