Bonjour à tous,
j'ai une sonde de température connectée en USB à mon ordinateur sous Ubuntu20. Un script récupère régulièrement la température pour l'envoyer dans un influxdb. Tout fonctionne correctement (i.e. la valeur de la température récupérée est correcte) par contre à chaque accès à la sonde le pilote envoie l'erreur suivante qui à force blinde complètement mes logs et la commande dmesg est entièrement remplie de ces erreurs.
[243729.415602] pl2303 ttyUSB0: error sending break = -32
[243789.419139] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243789.419727] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243789.420229] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243789.424801] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243790.461795] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243790.466343] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243790.535901] pl2303 ttyUSB0: pl2303_get_line_request - failed: -32
[243790.823619] pl2303 ttyUSB0: error sending break = -32
Comme la valeur récupérée est correcte je me suis dit que le plus simple serait de ne pas tenir compte de ces messages d'erreur. J'ai tenté plusieurs solutions mais rien n'y fait les messages sont toujours affiché par dmesg.
Avez vous une idée ?
# Tentatives précédentes
Posté par gUI (Mastodon) . Évalué à 2.
Si tu ne veux pas qu'on te re-propose ce que tu as déjà fait ce serait bien de dire ce que tu as tenté auparavant.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Tentatives précédentes
Posté par sanglier . Évalué à 2.
Alors comme mes tests remontes à plusieurs mois je ne me rappel plus de tout, mais une des techniques que j'avais tenté est de modifier printk:
cat /proc/sys/kernel/printk
3 4 1 7
au lieu de
cat /proc/sys/kernel/printk
4 4 1 7
Mais de toute manière cette solution ne me satisfaisait pas car elle s'applique à l'ensemble du système et non uniquement au pilote pl2303.
# solution "simple"
Posté par moi1392 . Évalué à 4.
La solution la plus évidente pour moi, est de virer le message d'erreur dans le code du pilote de ta sonde et de le recompiler.
C'est simple, quand on sait le faire…
[^] # Re: solution "simple"
Posté par Marc Quinton . Évalué à 3.
par ici ? https://github.com/torvalds/linux/blob/master/drivers/usb/serial/pl2303.c#L713
[^] # Re: solution "simple"
Posté par pepp . Évalué à 2.
Si le noyau supporte dynamic debugging (ce qui je pense est le cas sur Ubuntu) alors il doit être possible de l'utiliser pour désactiver ce log qui provient d'un
dev_err
avec quelque chose comme :[^] # Re: solution "simple"
Posté par sanglier . Évalué à 1.
Sauf erreur de ma part cela ne fonctionne pas pour la fonction dev_err ?
[^] # On peut voir la partie du script qui interroge la sonde ?
Posté par benja . Évalué à 4. Dernière modification le 30 janvier 2022 à 10:32.
Donc bug ne serait pas dans le driver, mais bien dans la manière dont le port série est ouvert/initialisé: son outil semble avoir activé le mode télétype malgré le fait que sa sonde ne le supporte pas.
pl2303_get_line_request est appellé par pl2303_set_termios
https://github.com/torvalds/linux/blob/1bff7d7e8c487b9b0ceab70b43b781f1d45f55eb/drivers/usb/serial/pl2303.c#L802
qui est appellé par pl2303_open
https://github.com/torvalds/linux/blob/1bff7d7e8c487b9b0ceab70b43b781f1d45f55eb/drivers/usb/serial/pl2303.c#L968
qui est appelé par le code générique de pilot série lors de l'ouverture de la ligne série.
Donc 1: son outil pourrait n'ouvrir la ligne qu'une seule fois et la reouvrir en cas d'erreur uniquement; 2: il ne devrait pas vouloir allouer de tty.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.