L'appareil posséde une connexion USB et devrait donc fonctionner comme un periphérique de stockage USB. Donc vous branchez le cable USB d'un côté sur l'ordinateur et de l'autre sur l'appareil et.... BOOM . Au bout de 5 secondes la machine plante. Vous n'avez plus qu'à appuyer sur le bouton reset. Des types futés ont analisé le problème et constaté que l'appareil n'envoie pas de chaîne d'identification USBS, mais une chaîne USBU. Ce USBU perturbe le module USB-storage du noyau, et l'ordinateur plante.
Si l'appareil est votre seul périphérique USB-storage,
alors il y a un moyen facile de le faire fonctionner : faire en sorte
que le module réagisse à la chaîne USBU au lieu de
USBS. Alors vous aures accès à votre appareil mais
à aucun autre périphérique USB-storage.
Voici comment faire : une solution propre consiste à changer la
chaîne dans les sources du module, et le recompiler. Mais vous
avez besoin des sources, et des fichiers d'en-tête. Vous devez
savoir quel fichier modifier. Et vous devez savoir compiler et
installer les sources du noyau. Si vous n'êtes pas
expérimentés vous risquez de passer un week-end
là-dessus.
Il y a mieux à faire pensant un week-end. Voici donc une
méthode plus pragmatique (et brutale) : appliquer une rustine au
module existant. Ok, il faut aussi compiler, mais il y a juste 30
lignes.
ATTENTION
Faites ce qui suit à vos risques. Ça a marché sur
ma machine, mais ça pourrait ne pas marcher sur la vôtre.
Faites une sauvegarde de vos données avant tout!
#include "stdio.h"Compilez-le en tapant
// buffer, must be large enough
#define BUFFER_SIZE 0x100000
char buffer[BUFFER_SIZE];
int main(int argc , char *argv[])
{
int i;
int i_Read ;
int i_Written ;
FILE *in,*out;
in = fopen("usb-storage.o","rb");
i_Read = fread(buffer,1,BUFFER_SIZE,in);
fclose(in);
fprintf(stderr,"Read %d Bytes\n",i_Read);
for(i=0; i< (i_Read -3); i++)
{
if(
buffer[i ] == 'U'
&& buffer[i+1] == 'S'
&& buffer[i+2] == 'B'
&& buffer[i+3] == 'S'
)
{
fprintf(stderr,"found at %d\n",i);
buffer[i+3] = 'U';
}
}
out = fopen("usb-storagex.o","wb");
i_Written = fwrite(buffer,1,i_Read,out);
fclose(out);
fprintf(stderr,"Wrote %d Bytes\n",i_Written);
}
Read 61670 BytesÀ cet instant précis le système utilise encore l'ancien module. Renommez l'ancien module et le modifié de façon à ce que le système utilise celui qui vous intéresse. Tapez :
found at 7775
found at 26381
Wrote 61670 Bytes
Jul 14 12:31:03 hawaii kernel: usb.c: USB device 2 (vend/prod 0x7b4/0x102) is not claimed by any active driver.Vous devez encuite monter le périphérique pour avoir accès aux photos. J'ai créé un répertoire
Jul 14 12:31:04 hawaii kernel: usb-uhci.c: interrupt, status 3, frame# 107
Jul 14 12:31:04 hawaii kernel: Vendor: OLYMPUS Model: C2Z,D520Z,C220Z Rev: 1054
Jul 14 12:31:04 hawaii kernel: Type: Direct-Access ANSI SCSI revision: 02
Jul 14 12:31:04 hawaii kernel: Attached scsi removable disk sda at scsi1, channel 0, id 0, lun 0
Jul 14 12:31:04 hawaii kernel: SCSI device sda: 256000 512-byte hdwr sectors (131 MB)
Jul 14 12:31:04 hawaii kernel: sda: Write Protect is off
J'ai constaté autre chose: le module USB-storage et la connexion ADSL avec pppoe ne fonctionnent pas simultanément sur mon système. Je peux soit aller sur internet, soit accéder à mon appareil, mais pas les deux en même temps.