Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/01/2015, à 12:47

TryphonCosinus

[Résolu] Matériel exotique USB non reconnu

Bonjour,

J'ai un adaptateur qui transforme un signal RS485 (dispositif de mesure) en un signal USB (ordinateur). Sous Ubuntu, en connectant cet adaptateur, un device apparaît sous le nom ttyACM0.
Ce standard de périphérique ne convient pas et j'en définit un autre qui est compatible avec mon matériel :

sudo rmmod cdc_acm

puis

sudo modprobe usbserial vendor=0x1fef product=0x2018
OU
sudo insmod /lib/modules/3.13.0-43-generic/kernel/drivers/usb/serial/usbserial.ko vendor=0x1fef product=0x2018

Cette fois, un périphérique ttyUSB0 apparaît et peut être lu via

sudo hexdump /dev/ttyUSB0

Bref mon matériel n'est pas déclaré dans /var/lib/usbutils/usb.ids et j'en suis quitte pour le déclarer moi-même à Ubuntu chaque fois que je le branche.

J'ai un serveur dont le système d'exploitation repose sur une distribution Debian. Certaines opérations comme modprobe et insmod ne sont pas disponibles mais le pilote usbserial.ko est bien présent.

Pour comprendre ce que je pourrais faire pour lier usbserial.ko à mon matériel dans le serveur, je voudrais le faire avec mon ordinateur sous Ubuntu et sans utiliser les commandes modprobe ou insmod. Peut-être en allant voir du côté du répertoire /sys/bus/usb ...

Quelques pistes me permettraient d'orienter d'autres recherches. Quoi chercher ? Quelle documentation en ligne ?

Et si quelqu'un connaît une recette, c'est encore mieux!

Merci.

Dernière modification par TryphonCosinus (Le 12/01/2015, à 01:15)


Asus P7P55D EVO, quadcore i7 2,8 GHz, Gainward Radeon HD4870, Samsung T240HD sur DisplayPort, TV Plasma Samsung sur HDMI, NAS QNAP TS-559

Hors ligne

#2 Le 06/01/2015, à 13:38

Rufus T. Firefly

Re : [Résolu] Matériel exotique USB non reconnu

TryphonCosinus a écrit :

J'ai un serveur dont le système d'exploitation repose sur une distribution Debian. Certaines opérations comme modprobe et insmod ne sont pas disponibles mais le pilote usbserial.ko est bien présent.

Salut,

C'est un peu étrange, ça, parce que modprobe etc. sont des commandes basiques du shell, donc a priori toujours disponibles.
Au pire, il suffit d'installer le paquet kmod, dans les dépôts à partir de wheezy (et ce serait module-init-tools pour squeeze).

Ou alors il y a quelque chose qui m'échappe...

En outre, il y a moyen de créer une règle udev qui lancerait un petit script idoine, pour que le bon module soit automatiquement pris en compte au branchement... (je sais que c'est possible, mais je ne maîtrise pas ça).

Dernière modification par Rufus T. Firefly (Le 06/01/2015, à 13:46)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#3 Le 06/01/2015, à 14:43

Braun

Re : [Résolu] Matériel exotique USB non reconnu

Bonjour,
Bref si j'ai compris, tu voudrais qu'un module un peu yéyé soit chargé automatiquement.
Mais à quoi sert le fichier « /etc/modules » ?

# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

Hors ligne

#4 Le 06/01/2015, à 15:47

TryphonCosinus

Re : [Résolu] Matériel exotique USB non reconnu

C'est exact Rufus, les commandes modprobe et insmod existent mais ne sont pas opérationnelles car en console SSH vers le serveur:

# modprobe usbserial vendor=0x1fef product=0x2018
modprobe: could not parse modules.dep

# insmod /lib/modules/others/usbserial.ko vendor=0x1fef product=0x2018
insmod: cannot insert `/lib/modules/others/usbserial.ko': Unknown symbol in module (-1): No such file or directory

udev ? Oui, il y a bien une façon de faire : http://www.ha19.no/usb/ mais il me faudrait une recette pour faire "à la main" ce que fait modprobe ... Ce que je voudrais c'est tester d'abord sous Ubuntu une telle procédure qui une fois comprise sera plus aisée à adapter sur mon serveur.

Installer un paquet sur le serveur ... il est basée sur une Debian mais allégée et tournée à la sauce Qnap ... l'installation d'un paquet passe par Optware IPKG, et là pas de kmod ipkg disponible. J'ai aussi essayé modprobe et insmode fournies dans l'ipkg busybox mais le résultat est le même. Il faut revenir aux "basiques" de Linux et de son administration ... je crois.

Braun : Je suis allé voir /etc/modules mais il est absent et participe à "l'allègement" du système sur le serveur.

Une autre idée ?


Asus P7P55D EVO, quadcore i7 2,8 GHz, Gainward Radeon HD4870, Samsung T240HD sur DisplayPort, TV Plasma Samsung sur HDMI, NAS QNAP TS-559

Hors ligne

#5 Le 10/01/2015, à 16:22

TryphonCosinus

Re : [Résolu] Matériel exotique USB non reconnu

Il y a une procédure documentée pour lier manuellement un pilote à un périphérique : http://lwn.net/Articles/143397/

Oublions un moment mon objectif de connecter mon périphérique sur mon serveur. J'utilise mon ordinateur sous Ubuntu 14.04.

Je connecte physiquement mon périphérique sur un port USB et je décharge le pilote usbserial_generic :

# rmmod cdc_acm

Dans /sys/bus/usb/devices apparaissent deux interfaces (mon périphérique a deux interfaces) : 1-1.1:1.0 et 1-1.1:1.1 qui sont sur le bus n°1 - port hub n°1 : configuration 1 . interfaces n°0 et 1.
Dans /sys/bus/usb/devices/1-1.1:1.0 (et 1-1.1:1.1), il n'y a pas (ou il n'y a plus) de lien symbolique vers un répertoire nommé 'driver'; ce qui signifie qu'il n'est contrôlé par aucun pilote.

Je charge ensuite le pilote usbserial que je souhaite utiliser avec mon périphérique :

# sudo insmod /lib/modules/3.13.0-43-generic/kernel/drivers/usb/serial/usbserial.ko

Il apparaît dans /sys/bus/usb/drivers. Ce répertoire contient un fichier 'bind' en écriture seule accessible seulement par root:

# sudo su

Selon la documentation, je peux ajouter mes interfaces dans ce fichier :

# echo -n "1-1.1:1.0" > /sys/bus/usb/drivers/usbserial/bind
# echo -n "1-1.1:1.1" > /sys/bus/usb/drivers/usbserial/bind

Mais ces commandes renvoient :

bash: echo: erreur d'écriture : Aucun périphérique de ce type

L'alternative suivante ne fait pas mieux :

# tee /sys/bus/usb/drivers/usbserial/bind <<< 1-1.1:1.0
tee: /sys/bus/usb/drivers/usbserial/bind: Aucun périphérique de ce type

Le statut du répertoire est certes particulier, mais est-ce bien ce que fait modprobe : écrire dans le fichier bind ? ... il y a donc un moyen de le faire à la main !
Si c'est bien la bonne voie, je ne dois plus être très loin du but.

Une idée ?


Asus P7P55D EVO, quadcore i7 2,8 GHz, Gainward Radeon HD4870, Samsung T240HD sur DisplayPort, TV Plasma Samsung sur HDMI, NAS QNAP TS-559

Hors ligne

#6 Le 12/01/2015, à 01:15

TryphonCosinus

Re : [Résolu] Matériel exotique USB non reconnu

Il y a une subtilité qui m'a échappée :

Après la commande:

# sudo insmod /lib/modules/3.13.0-43-generic/kernel/drivers/usb/serial/usbserial.ko

trois arborescences apparaissent :

/sys/bus/usb-serial/drivers/generic
/sys/bus/usb/drivers/usbserial
/sys/bus/usb/drivers/usbserial_generic

Et maintenant,

# echo -n "1-1.1:1.1" > /sys/bus/usb/drivers/usbserial_generic/bind
ou
# echo 1fef 2018 > /sys/bus/usb-serial/drivers/generic/new_id

engendrent l'activation de ttyUSB0 et il peut être lu alors que

# echo -n "1-1.1:1.1" > /sys/bus/usb/drivers/usbserial/bind

échoue.

Voilà donc une façon de connecter un périphérique à son pilote sans modprobe. Pour la petite histoire, cela ne m'a pas (encore) permis de connecter ce périphérique à mon serveur.

Dernière modification par TryphonCosinus (Le 12/01/2015, à 01:27)


Asus P7P55D EVO, quadcore i7 2,8 GHz, Gainward Radeon HD4870, Samsung T240HD sur DisplayPort, TV Plasma Samsung sur HDMI, NAS QNAP TS-559

Hors ligne