Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[LONG] modprobe qui tourne en rond

6 réponses
Avatar
Hugolino
Salut

J'ai donc supprimé tout ce qui concernait hotplug sur ma Sarge/2.4.26.

Je boote avec ma clé USB débranchée.
Je fais mon petit bintz habituel (je suis en train de regarder Easy
Rider avec mplayer) et la charge de la machine est d'environ 0,5 (avec le
proc idle à 76 %, le reste étant pris par mplayer (donc 24%)).

Tout à coup je me rappelle de cette funeste histoire de modprobe qui
tourne en rond.
Je rebranche ma clé USB et je lance un top: modprobe prend les 76 % que
lui laisse mplayer et la charge de la machine grimpe aux alentours de 1.
Un 'ps ww -C modprobe' raconte "/sbin/modprobe -as scsi_mod sd_mod
usb-storage"
Mais un lsmod montre que seuls sont chargés scsi_mod et sd_mod.

Je kill modprobe, le proc retombe à 76 % idle, et je débranche ma clé
USB.

Je charge le module usb-storage à la mimine avec 'modprobe usb-storage'

Je vérifie que les trois modules scsi_mod, sd_mod et usb-storage sont
bien chargés, et je rebranche ma clé USB en surveillant la fenêtre dans
laquelle tourne top.

Et là rebelotte, modprobe se remet à prendre 76 % du CPU et la charge de
la machine remonte à 1.

Qu'est ce que c'est que ce bord*l ?

J'ai donc un modprobe qui tente de charger des modules déjà chargé et
qui ne sort aucun message d'erreur dans /var/log/syslog (ce que devrait
faire l'option s de modprobe)

A noter que la commande de montage de la clé USB est très longue à rendre
la main. Et que pendant ce temps-là, le /var/log/syslog s'allonge d'une
térachiée de lignes



Ploum, ploum....


Bon pour être complet, je reboote et je teste.

Reboot:
* système idle
* une fenêtre avec top
* une autre pour faire un 'modprobe usb-storage'.
Le seul programme qui tourne est mpg321 pour faire ça en musique.

J'ouvre une fenêtre pour y lancer un 'tail -f /var/log/syslog', les 3
dernières lignes sont:
8<----------------------------------------------------------------------
Jun 2 19:34:07 Deborah kernel: Initializing USB Mass Storage driver...
Jun 2 19:34:07 Deborah kernel: usb.c: registered new driver usb-storage
Jun 2 19:34:07 Deborah kernel: USB Mass Storage support registered.
8<----------------------------------------------------------------------

qui correspondent au chargement du module usb-storage que je viens de
faire à la mimine.

Je branche ma clé USB...
Je vois modprobe qui apparait dans la fenêtre de top et qui me bouffe
98% des ressources CPU avec la charge de la machine qui grimpe à 1.
Le /var/log/syslog s'allonge d'une térachiée de lignes.

Ça raconte:
8<----------------------------------------------------------------------
kernel: hub.c: port 1, portstatus 101, change 1,12 Mb/s
kernel: hub.c: port 1 connection change
kernel: hub.c: port 1, portstatus 101, change 1,12 Mb/s
kernel: hub.c: port 1, portstatus 101, change 0,12 Mb/s
last message repeated 3 times
kernel: hub.c: port 1, portstatus 103, change 10, 12 Mb/s
kernel: hub.c: new USB device 00:02.3-1,assigned address 2
kernel: usb.c: kmalloc IF d529a900, numif 1
kernel: usb.c: new device strings: Mfr=0,Product=3, SerialNumber=4
kernel: usb.c: USB device number 2 defaultlanguage ID 0x409
kernel: Product: USB Pen drive
Deborah kernel: SerialNumber: 0213A0001
kernel: usb-storage: act_altsettting is 0
Deborah kernel: usb-storage: id_index calculated to be: 90
kernel: usb-storage: Array length appears to be: 92
kernel: usb-storage: USB Mass Storage device detected
kernel: usb-storage: Endpoints: In: 0xd4d8b8c0 Out: 0xd4d8b8d4 Int:
0x00000000 (Period 0)
Kernel: usb-storage: New GUID 05e3070b00000000213a0001
kernel: usb-storage: GetMaxLUN command result is 1, data is 0
kernel: usb-storage: Transport: Bulk
kernel: usb-storage: Protocol: Transparent SCSI
kernel: usb-storage: *** thread sleeping.
kernel: scsi1 : SCSI emulation for USB Mass Storage devices
kernel: usb-storage: queuecommand() called
kernel: usb-storage: *** thread awakened.
kernel: usb-storage: Command INQUIRY (6 bytes)
kernel: usb-storage: 12 00 00 00 ff 00 73 d8 61 89 20 c0
kernel: usb-storage: Bulk command S 0x43425355 T0x1 Trg 0 LUN 0 L 255 F 128 CL 6
kernel: usb-storage: Bulk command transfer result=0
kernel: usb-storage: usb_stor_transfer_partial(): xfer 255 bytes
kernel: usb-storage: usb_stor_bulk_msg() returned 0 xferred 40/255
kernel: usb-storage: Bulk data transfer result 0x1
kernel: usb-storage: Attempting to get CSW...
kernel: usb-storage: clearing endpoint halt for pipe 0xc0008280
kernel: usb-storage: usb_stor_clear_halt: result=0
kernel: usb-storage: Attempting to get CSW (2nd try)...
kernel: usb-storage: Bulk status result = 0
kernel: usb-storage: Bulk status Sig 0x53425355 T 0x1 R 215 Stat 0x0
kernel: usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
kernel: usb-storage: scsi cmd done, result=0x0
kernel: usb-storage: *** thread sleeping.
kernel: Vendor: Generic Model: STORAGE DEVICE Rev: 1.04
kernel: Type: Direct-Access ANSI SCSI revision: 02
8<----------------------------------------------------------------------

Puis ceci répété au moins 10 fois
8<----------------------------------------------------------------------
Jun 2 19:39:47 Deborah kernel: usb-storage: queuecommand() called
Jun 2 19:39:47 Deborah kernel: usb-storage: *** thread awakened.
Jun 2 19:39:47 Deborah kernel: usb-storage: Bad target number (1/0)
Jun 2 19:39:47 Deborah kernel: usb-storage: *** thread sleeping.
8<----------------------------------------------------------------------


Encore quelques dizaines de lignes et ça se termine par:
8<----------------------------------------------------------------------
kernel: usb-storage: *** thread sleeping.
kernel: sda1
kernel: WARNING: USB Mass Storage data integrity not assured
kernel: USB Mass Storage device found at 2
kernel: usb.c: usb-storage driver claimed interface d529a900
kernel: usb.c: kusbd: /sbin/hotplug add 2
kernel: usb.c: kusbd policy returned 0xfffffffe
kernel: hub.c: port 2, portstatus 100, change 0,12 Mb/s
kernel: hub.c: port 3, portstatus 100, change 0,12 Mb/s
usbmgr[790]: vendor:0x5e3 product:0x70b
usbmgr[790]: class:0x8 subclass:0x6 protocol:0x50
usbmgr[790]: USB device is matched the configuration
8<----------------------------------------------------------------------


Je kill modprobe en surveillant /var/log/syslog. Ce dernier s'allonge de
3 lignes
8<----------------------------------------------------------------------
Jun 2 19:48:08 Deborah usbmgr[790]: "scsi_mod" was loaded
Jun 2 19:48:08 Deborah usbmgr[790]: "sd_mod" was loaded
Jun 2 19:48:08 Deborah usbmgr[790]: "usb-storage" was loaded
8<----------------------------------------------------------------------

Remarque: ces trois modules étaient *déjà* chargés avant que le modprobe ne
parte en vrille suite au branchement de la clé USB.


et je fais 'mount /mnt/CléUSB' (sachant que dans /etc/fstab, j'ai la
ligne suivante:)
8<----------------------------------------------------------------------
/dev/sda1 /mnt/CléUSB vfat noauto,noatime,rw,user,noexec,umask=000 0 0
8<----------------------------------------------------------------------

Je lance cette dernière commande à pile-poil 19 h 55.

Et je surveille mon /var/log/syslog (en lançant un rclock -update 1)

Bref: il faut une minute et dix secondes pour que la commande 'mount
/mnt/CléUSB' me rende la main.
Pendant ce temps le /var/log/syslog se bourre la tronche. Ça commence
par:
8<----------------------------------------------------------------------
19:55:00 kernel: usb-storage: queuecommand() called
19:55:00 kernel: usb-storage: *** thread awakened.
19:55:00 kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
19:55:00 kernel: usb-storage: 00 00 00 00 00 00 00 00 00 00 00 00
19:55:00 kernel: usb-storage: Bulk command S 0x43425355 T 0x6 Trg 0 LUN 0 L 0
F 0 CL 6
19:55:00 kernel: usb-storage: Bulk command transfer result=0
19:55:00 kernel: usb-storage: Attempting to get CSW...
19:55:00 kernel: usb-storage: Bulk status result = 0
19:55:00 kernel: usb-storage: Bulk status Sig 0x53550000 T 0x65342 R 0 Stat 0x0
19:55:00 kernel: usb-storage: Bulk logical error
19:55:00 kernel: usb-storage: -- transport indicates error, resetting
19:55:00 kernel: usb-storage: Bulk reset requested
19:55:06 kernel: usb-storage: usb_stor_clear_halt:result=0
19:55:06 kernel: usb-storage: usb_stor_clear_halt:result=0
19:55:06 kernel: usb-storage: Bulk soft reset completed
19:55:06 kernel: usb-storage: scsi cmd done,result=0x70000
19:55:06 kernel: usb-storage: *** thread sleeping.
19:55:06 kernel: usb-storage: queuecommand() called
19:55:06 kernel: usb-storage: *** thread awakened.
8<----------------------------------------------------------------------


Et ça se termine 1 minute et 6 secondes plus tard par:
8<----------------------------------------------------------------------
Jun 2 19:56:06 Deborah kernel: usb-storage: *** thread sleeping.
Jun 2 19:56:06 Deborah kernel: usb-storage: queuecommand() called
Jun 2 19:56:06 Deborah kernel: usb-storage: *** thread awakened.
Jun 2 19:56:06 Deborah kernel: usb-storage: Command READ_10 (10 bytes)
19:56:06 kernel: usb-storage: 28 00 00 00 02 34 00 00 01 00 00 00
19:56:06 kernel: usb-storage: Bulk command S 0x43425355 T 0x2f Trg 0 LUN 0
L 512 F 128 CL 10
19:56:06 Deborah kernel: usb-storage: Bulk command transfer result=0
19:56:06 Deborah kernel: usb-storage: usb_stor_transfer_partial(): xfer
512 bytes
19:56:06 Deborah kernel: usb-storage: usb_stor_bulk_msg() returned 0
xferred 512/512
19:56:06 Deborah kernel: usb-storage: usb_stor_transfer_partial(): transfer
complete
19:56:06 Deborah kernel: usb-storage: Bulk data transfer result 0x0
19:56:06 Deborah kernel: usb-storage: Attempting to get CSW...
19:56:06 Deborah kernel: usb-storage: Bulk status result = 0
19:56:06 Deborah kernel: usb-storage: Bulk status Sig 0x53425355 T 0x2f R 0
Stat 0x0
19:56:06 Deborah kernel: usb-storage: scsi cmd done, result=0x0
19:56:06 Deborah kernel: usb-storage: *** thread sleeping.
8<----------------------------------------------------------------------

(J'ai retiré de ces log la date, l'heure quand elle ne donne pas
d'indication et le nom de la machine)


Késako ?

Merci de toute aide



--
«Je suis en train de peaufiner les definitions de locales pour le vietnamien;
est-ce que pour l'ordre alphabetique les lettres A(, A^, DD, E^, O^, O+ et U+
sont bien considerées comme des lettres à part ?»
-+- Pablo in Guide du linuxien pervers : "Les locales ? C'est simple !" -+-

6 réponses

Avatar
no_spam
On Wed, 02 Jun 2004 20:23:19 +0200, Hugolino wrote:

Salut

J'ai donc supprimé tout ce qui concernait hotplug sur ma Sarge/2.4.26.

Je boote avec ma clé USB débranchée.
Je fais mon petit bintz habituel (je suis en train de regarder Easy
Rider avec mplayer) et la charge de la machine est d'environ 0,5 (avec le
proc idle à 76 %, le reste étant pris par mplayer (donc 24%)).

Tout à coup je me rappelle de cette funeste histoire de modprobe qui
tourne en rond.
Je rebranche ma clé USB et je lance un top: modprobe prend les 76 % que
lui laisse mplayer et la charge de la machine grimpe aux alentours de 1.
Un 'ps ww -C modprobe' raconte "/sbin/modprobe -as scsi_mod sd_mod
usb-storage"
Mais un lsmod montre que seuls sont chargés scsi_mod et sd_mod.

Je kill modprobe, le proc retombe à 76 % idle, et je débranche ma clé
USB.
[...]

J'ai donc un modprobe qui tente de charger des modules déjà chargé et
qui ne sort aucun message d'erreur dans /var/log/syslog (ce que devrait
faire l'option s de modprobe)

A noter que la commande de montage de la clé USB est très longue à rendre
la main. Et que pendant ce temps-là, le /var/log/syslog s'allonge d'une
térachiée de lignes

[...]

kernel: usb-storage: *** thread awakened.
kernel: usb-storage: Command INQUIRY (6 bytes)
kernel: usb-storage: 12 00 00 00 ff 00 73 d8 61 89 20 c0
kernel: usb-storage: Bulk command S 0x43425355 T0x1 Trg 0 LUN 0 L 255 F 128 CL 6
kernel: usb-storage: Bulk command transfer result=0
kernel: usb-storage: usb_stor_transfer_partial(): xfer 255 bytes
kernel: usb-storage: usb_stor_bulk_msg() returned 0 xferred 40/255
kernel: usb-storage: Bulk data transfer result 0x1
kernel: usb-storage: Attempting to get CSW...
kernel: usb-storage: clearing endpoint halt for pipe 0xc0008280
kernel: usb-storage: usb_stor_clear_halt: result=0
kernel: usb-storage: Attempting to get CSW (2nd try)...
kernel: usb-storage: Bulk status result = 0
kernel: usb-storage: Bulk status Sig 0x53425355 T 0x1 R 215 Stat 0x0
kernel: usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
kernel: usb-storage: scsi cmd done, result=0x0
[...]

19:55:00 kernel: usb-storage: queuecommand() called
19:55:00 kernel: usb-storage: *** thread awakened.
19:55:00 kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
19:55:00 kernel: usb-storage: 00 00 00 00 00 00 00 00 00 00 00 00
19:55:00 kernel: usb-storage: Bulk command S 0x43425355 T 0x6 Trg 0 LUN 0 L 0
F 0 CL 6
19:55:00 kernel: usb-storage: Bulk command transfer result=0
19:55:00 kernel: usb-storage: Attempting to get CSW...
19:55:00 kernel: usb-storage: Bulk status result = 0
19:55:00 kernel: usb-storage: Bulk status Sig 0x53550000 T 0x65342 R 0 Stat 0x0
19:55:00 kernel: usb-storage: Bulk logical error
19:55:00 kernel: usb-storage: -- transport indicates error, resetting
19:55:00 kernel: usb-storage: Bulk reset requested


Premier problème: le firmware est buggé et supporte mal deux commandes
SCSI qui sont primordiales:
INQUIRY et TEST_UNIT_READY.
Il y a des hacks dans le driver pour gérer ces cas, mais il faut
que le driver sache que le device USB en question est buggé.
Pour celà, il faut modifier le fichier
/usr/src/linux/driver/usb/storage/unusual_devs.h
Le flag US_FL_FIX_INQUIRY devrait fixer ce problème.

kernel: usb-storage: *** thread sleeping.
kernel: Vendor: Generic Model: STORAGE DEVICE Rev: 1.04
kernel: Type: Direct-Access ANSI SCSI revision: 02
8<----------------------------------------------------------------------

Puis ceci répété au moins 10 fois
8<----------------------------------------------------------------------
Jun 2 19:39:47 Deborah kernel: usb-storage: queuecommand() called
Jun 2 19:39:47 Deborah kernel: usb-storage: *** thread awakened.
Jun 2 19:39:47 Deborah kernel: usb-storage: Bad target number (1/0)
Jun 2 19:39:47 Deborah kernel: usb-storage: *** thread sleeping.
8<----------------------------------------------------------------------


Deuxième problème: le firmware est encore plus buggé qu'il n'y parait
et gère sans doute mal les luns SCSI.
Le flag à employer pour ces cas est US_FL_SINGLE_LUN
Si ça merde encore après avoir ajouté le device aux unusual_devs avec
ces flags, c'est qu'il y a encore d'autres bugs du firmware....

Avatar
Hugolino
Le Wed, 02 Jun 2004 23:46:49 +0200, no_spam a écrit:
Premier problème: le firmware est buggé et supporte mal deux commandes
SCSI qui sont primordiales:
INQUIRY et TEST_UNIT_READY.
Il y a des hacks dans le driver pour gérer ces cas, mais il faut
que le driver sache que le device USB en question est buggé.
Pour celà, il faut modifier le fichier
/usr/src/linux/driver/usb/storage/unusual_devs.h
Le flag US_FL_FIX_INQUIRY devrait fixer ce problème.


OK, j'ai ouvert le fichier 'unusual_devs.h', mais il contient 775 lignes
par groupe de 5, du type:
/* Patch for Kyocera Finecam L3
* Submitted by Michael Krauth
*/
UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100,
"Kyocera",
"Finecam L3",
US_SC_SCSI, US_PR_BULK, NULL,
US_FL_FIX_INQUIRY),

Que dois-je modifié et où ?

(Me v'là transformé en hacker du noyau, on aura tout vu :)


Deuxième problème: le firmware est encore plus buggé qu'il n'y parait
et gère sans doute mal les luns SCSI.


Le fait est que je dois faire un "su -c 'modprobe usb-storage'" pour
pouvoir monter ma clé et que "cdrecord -scanbus" me montre ma clé USB en
1,0,0

Le flag à employer pour ces cas est US_FL_SINGLE_LUN


Ouh-là. Ich bin kein hacker...


Si ça merde encore après avoir ajouté le device aux unusual_devs avec
ces flags, c'est qu'il y a encore d'autres bugs du firmware....


Bon, la doc, elle est où ? (sur LKML :/ ?)


--
"Alors, je crois savoir ce qui n'allait pas. J'ai désactivé
l'option : Send in rich HTML by default. Et je crois que c'était
ça qui foutait le bordel."
-+- EF in Guide du linuxien pervers : "Bien configurer son Netscape"

Avatar
Thomas Nemeth
Le ven 04 jun 2004 à 19:29, Hugolino a tapoté :
| Le Wed, 02 Jun 2004 23:46:49 +0200, no_spam a écrit:
| > Il y a des hacks dans le driver pour gérer ces cas, mais il faut
| > que le driver sache que le device USB en question est buggé.
| > Pour celà, il faut modifier le fichier
| > /usr/src/linux/driver/usb/storage/unusual_devs.h
| > Le flag US_FL_FIX_INQUIRY devrait fixer ce problème.
|
| OK, j'ai ouvert le fichier 'unusual_devs.h', mais il contient 775 lignes
| par groupe de 5, du type:
| /* Patch for Kyocera Finecam L3
| * Submitted by Michael Krauth
| */
| UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100,
| "Kyocera",
| "Finecam L3",
| US_SC_SCSI, US_PR_BULK, NULL,
| US_FL_FIX_INQUIRY),
|
| Que dois-je modifié et où ?

Tu dois modifier l'entrée correspondant à ton machin USB. Tu peux
en connaître les caractéristiques en regardant dans
/proc/bus/usb/devices.


| > Si ça merde encore après avoir ajouté le device aux unusual_devs avec
| > ces flags, c'est qu'il y a encore d'autres bugs du firmware....
|
| Bon, la doc, elle est où ? (sur LKML :/ ?)

Perso j'ai décortiqué les modules usb (et en particulier
usb-storage) pour savoir. M'suis pas fait chier à chercher
dans le bordel de la LKML : c'est plus simple et clair dans
le code.


Thomas
--
BOFH excuse #326:
We need a licensed electrician to replace the light bulbs in the computer room.
Avatar
Hugolino
Le 04 Jun 2004 18:50:08 GMT, Thomas Nemeth a écrit:
Le ven 04 jun 2004 à 19:29, Hugolino a tapoté :
| Le Wed, 02 Jun 2004 23:46:49 +0200, no_spam a écrit:
| > Il y a des hacks dans le driver pour gérer ces cas, mais il faut
| > que le driver sache que le device USB en question est buggé.
| > Pour celà, il faut modifier le fichier
| > /usr/src/linux/driver/usb/storage/unusual_devs.h
| > Le flag US_FL_FIX_INQUIRY devrait fixer ce problème.
|
| OK, j'ai ouvert le fichier 'unusual_devs.h', mais il contient 775 lignes
| par groupe de 5, du type:
| /* Patch for Kyocera Finecam L3
| * Submitted by Michael Krauth
| */
| UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100,
| "Kyocera",
| "Finecam L3",
| US_SC_SCSI, US_PR_BULK, NULL,
| US_FL_FIX_INQUIRY),
|
| Que dois-je modifié et où ?

Tu dois modifier l'entrée correspondant à ton machin USB. Tu peux
en connaître les caractéristiques en regardant dans
/proc/bus/usb/devices.


Ça, c'est mon imprimante:
8<----------------------------------------------------------------------
T: Bus Lev Prnt Port Cnt Dev#= 1 Spd MxCh= 3
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor00 ProdID00 Rev= 0.00
S: Product=USB OHCI Root Hub
S: SerialNumberà81f000
C:* #Ifs= 1 Cfg#= 1 Atr@ MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
E: Ad(I) Atr(Int.) MxPS= 2 Ivl%5ms
T: Bus Lev Prnt Port Cnt Dev#= 2 Spd MxCh= 0
D: Ver= 1.10 Cls(>ifc ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendorf0 ProdID04 Rev= 1.00
S: Manufacturer=Hewlett-Packard
S: ProductÞskJet 3820
S: SerialNumber=CN27F1F0HM18
C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 2 Cls(print) Sub Prot Driver=usblp
E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms
8<----------------------------------------------------------------------


Et voilà ma clé USB...
8<----------------------------------------------------------------------
T: Bus Lev Prnt Port Cnt Dev#= 1 Spd MxCh= 3
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor00 ProdID00 Rev= 0.00
S: Product=USB OHCI Root Hub
S: SerialNumberà81d000
C:* #Ifs= 1 Cfg#= 1 Atr@ MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
E: Ad(I) Atr(Int.) MxPS= 2 Ivl%5ms
T: Bus Lev Prnt Port Cnt Dev#= 2 Spd MxCh= 0
D: Ver= 2.00 Cls(>ifc ) Sub Prot MxPSd #Cfgs= 1
P: Vendore3 ProdID0b Rev= 1.04
S: Product=USB Pen drive
S: SerialNumber13A0001
C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls(stor.) Sub ProtP Driver=usb-storage
E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms
8<----------------------------------------------------------------------

Quelles sont les infos interessantes dans ce bord*l ?

Et comment retrouver le truc correspondant à modifier dans
unusual_devs.h ?


| > Si ça merde encore après avoir ajouté le device aux unusual_devs avec
| > ces flags, c'est qu'il y a encore d'autres bugs du firmware....
|
| Bon, la doc, elle est où ? (sur LKML :/ ?)

Perso j'ai décortiqué les modules usb (et en particulier
usb-storage) pour savoir. M'suis pas fait chier à chercher
dans le bordel de la LKML : c'est plus simple et clair dans
le code.


Mais je pense que ton niveau est très largement au dessus du mien (en ce
qui concerne le C en tout cas).
Je suis même infoutu de retrouver le source de usb-storage. J'ai bien un
usb-storage.o sous /usr/src/linux/drivers/usb/storage/ mais pas de .c ou
.h...


--
Hugo NPN (i --> ee)
Passe que moi, au départ, j'avais fait informatique comme études, pas NT,
et je voudrais revenir à mon métier premier.
-+- BB in Guide du Linuxien pervers - Bien configurer son métier. -+-

Avatar
Thomas Nemeth
Le dim 06 jun 2004 à 01:10, Hugolino a tapoté :
| Le 04 Jun 2004 18:50:08 GMT, Thomas Nemeth a écrit:
| > Le ven 04 jun 2004 à 19:29, Hugolino a tapoté :
| > | Le Wed, 02 Jun 2004 23:46:49 +0200, no_spam a écrit:
| > | UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100,
| > | "Kyocera",
| > | "Finecam L3",
| > | US_SC_SCSI, US_PR_BULK, NULL,
| > | US_FL_FIX_INQUIRY),
| > |
| > | Que dois-je modifié et où ?
| >
| > Tu dois modifier l'entrée correspondant à ton machin USB. Tu peux
| > en connaître les caractéristiques en regardant dans
| > /proc/bus/usb/devices.
|
| Ça, c'est mon imprimante:

Sauf qu'on s'en fout de l'imprimante :)


| Et voilà ma clé USB...

Non.


| 8<----------------------------------------------------------------------
| T: Bus Lev Prnt Port Cnt Dev#= 1 Spd MxCh= 3
| B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
| D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
| P: Vendor00 ProdID00 Rev= 0.00
| S: Product=USB OHCI Root Hub
| S: SerialNumberà81d000
| C:* #Ifs= 1 Cfg#= 1 Atr@ MxPwr= 0mA
| I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
| E: Ad(I) Atr(Int.) MxPS= 2 Ivl%5ms

Ça c'était le Root Hub USB. C'est marqué à la ligne Product=...


| T: Bus Lev Prnt Port Cnt Dev#= 2 Spd MxCh= 0
| D: Ver= 2.00 Cls(>ifc ) Sub Prot MxPSd #Cfgs= 1
| P: Vendore3 ProdID0b Rev= 1.04
| S: Product=USB Pen drive
| S: SerialNumber13A0001
| C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr0mA
| I: If#= 0 Alt= 0 #EPs= 2 Cls(stor.) Sub ProtP Driver=usb-storage
| E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
| E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms

Ça c'était ta clé USB.


| Quelles sont les infos interessantes dans ce bord*l ?

Les infos Vendor, ProdID et Product.


| Et comment retrouver le truc correspondant à modifier dans
| unusual_devs.h ?

Faut chercher une autre clé USB, de la même marque si ça existe, et
remplacer les valeurs présentes par celles sus-citées


| > Perso j'ai décortiqué les modules usb (et en particulier
| > usb-storage) pour savoir. M'suis pas fait chier à chercher
| > dans le bordel de la LKML : c'est plus simple et clair dans
| > le code.
|
| Mais je pense que ton niveau est très largement au dessus du mien (en ce
| qui concerne le C en tout cas).
| Je suis même infoutu de retrouver le source de usb-storage. J'ai bien un
| usb-storage.o sous /usr/src/linux/drivers/usb/storage/ mais pas de .c ou
| .h...

C'est normal. Dans les 2.4.x (et au-delà) le module usb-storage est
divisé en petits fichiers (car il commençait à devenir trop gros) :
les fonctions sont réparties dans les divers fichiers du répertoire
'storage'.
Pour savoir exactement quoi mettre, trouve le fichier .c qui inclue
unusual_devs.h (il le fait à 1 endroit particulier normalement) et
trouve la structure qui est remplie avec le #define UNUSUAL_DEV : il
y a certainement des informations sur ce à quoi servent les champs.

Peut-être même est-ce tout simplement en tête de unusual_devs.h !


Thomas
--
Voici mon problème, j'ai deux PCs relies par des cartes ethernet,
configures avec le protocole PPP.
-+- Romain in Guide du linuxien pervers - "Ils sont fous ces romains !" -+-


Avatar
Hugolino
Le 06 Jun 2004 20:15:15 GMT, Thomas Nemeth a écrit:
Le dim 06 jun 2004 à 01:10, Hugolino a tapoté :
| Le 04 Jun 2004 18:50:08 GMT, Thomas Nemeth a écrit:
| > Le ven 04 jun 2004 à 19:29, Hugolino a tapoté :
| > | Le Wed, 02 Jun 2004 23:46:49 +0200, no_spam a écrit:
| > | UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100,
| > | "Kyocera",
| > | "Finecam L3",
| > | US_SC_SCSI, US_PR_BULK, NULL,
| > | US_FL_FIX_INQUIRY),
| > |
| > | Que dois-je modifié et où ?
| >
| > Tu dois modifier l'entrée correspondant à ton machin USB. Tu peux
| > en connaître les caractéristiques en regardant dans
| > /proc/bus/usb/devices.
|
| Ça, c'est mon imprimante:

Sauf qu'on s'en fout de l'imprimante :)


*Tu t'en fout* (cépatoikiamiunanàlafairemarcher)

| Et voilà ma clé USB...

Non.


| 8<----------------------------------------------------------------------
| T: Bus Lev Prnt Port Cnt Dev#= 1 Spd MxCh= 3
| B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
| D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
| P: Vendor00 ProdID00 Rev= 0.00
| S: Product=USB OHCI Root Hub
| S: SerialNumberà81d000
| C:* #Ifs= 1 Cfg#= 1 Atr@ MxPwr= 0mA
| I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
| E: Ad(I) Atr(Int.) MxPS= 2 Ivl%5ms

Ça c'était le Root Hub USB. C'est marqué à la ligne Product=...


C'est juste que je croyais qu'un device USB commençait par le séquence
T: B: D: ....

| T: Bus Lev Prnt Port Cnt Dev#= 2 Spd MxCh= 0
| D: Ver= 2.00 Cls(>ifc ) Sub Prot MxPSd #Cfgs= 1
| P: Vendore3 ProdID0b Rev= 1.04
| S: Product=USB Pen drive
| S: SerialNumber13A0001
| C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr0mA
| I: If#= 0 Alt= 0 #EPs= 2 Cls(stor.) Sub ProtP Driver=usb-storage
| E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
| E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms

Ça c'était ta clé USB.


Je le note


| Quelles sont les infos interessantes dans ce bord*l ?

Les infos Vendor, ProdID et Product.


Je le note


| Et comment retrouver le truc correspondant à modifier dans
| unusual_devs.h ?

Faut chercher une autre clé USB, de la même marque si ça existe, et
remplacer les valeurs présentes par celles sus-citées


Gnî ? Moi pas développeur noyau...
Veux-tu dire qu'il faut que j'aille pleurer auprès du mon revendeur de
mon quartier pour avoir une clé de la même marque ?
(J'entends déjà son rire sardonique)


| > Perso j'ai décortiqué les modules usb (et en particulier
| > usb-storage) pour savoir. M'suis pas fait chier à chercher
| > dans le bordel de la LKML : c'est plus simple et clair dans
| > le code.
|
| Mais je pense que ton niveau est très largement au dessus du mien (en ce
| qui concerne le C en tout cas).
| Je suis même infoutu de retrouver le source de usb-storage. J'ai bien un
| usb-storage.o sous /usr/src/linux/drivers/usb/storage/ mais pas de .c ou
| .h...

C'est normal. Dans les 2.4.x (et au-delà) le module usb-storage est
divisé en petits fichiers (car il commençait à devenir trop gros) :
les fonctions sont réparties dans les divers fichiers du répertoire
'storage'.
Pour savoir exactement quoi mettre, trouve le fichier .c qui inclue
unusual_devs.h (il le fait à 1 endroit particulier normalement) et
trouve la structure qui est remplie avec le #define UNUSUAL_DEV : il
y a certainement des informations sur ce à quoi servent les champs.


Pour les petits n'enfants: «n'écoutez pas ce gars-là, il est fou»


Peut-être même est-ce tout simplement en tête de unusual_devs.h !


Qu'est ce que je disais ? ...


PS Perso: Je vais quand même essayer de me demerder avec ce tsoin-tsoin,
mais je crois bien qu'on attaque le versant ardu de la falaise...


--
Et je ne sais pas trop à quoi sert supermount...
Essentiellement à refermer le porte gobelet lorque tu essaye d'en sortir

un CD, ceci afin de te casser un doigt par pure méchanceté.
-+- PL in GFA : Supermount héros super méchant -+-