Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Modyfikacja identyfikacji urządzenia usb w pamieci eeprom

17 Gru 2011 12:19 3524 18
  • Poziom 37  
    Witam

    Na początek chciałbym się wytłumaczyć dlaczego akurat ten post w tym dziale.
    Myślałem o dziale komputery serwis lecz stwierdziłem, że tutaj koledzy posiadają większą wiedzę jeśli chodzi o warstwę sprzętową.

    Posiadam kartę dźwiękową SB500 z sterownikami od Toshiby (które są tylko pod XP) Karta to to samo co SB490 która posiada sterowniki pod W7 lecz nie mogę ich zainstalować bo nie zgadza się identyfikator urządzenia.

    Wpadłem na pomysł zmiany identyfikatora urządzenia zawartego w pamieci eeprom.

    Pytanie czy coś takiego jest wykonalne?

    I jak odczytać eeprom ISSI 423 (podejrzewam że to zwykły eeprom I2c)
  • Pomocny post
    Poziom 35  
    A nie prościej zmienić identyfikator urządzenia w pliku inf sterownika?
  • Poziom 37  
    Hmm chętnie spróbuje. Może kolega napisze coś o tym więcej?
  • Poziom 29  
    mkpl napisał:
    ISSI 423

    Chyba coś kolega źle odczytał z tej kostki, google nic o tym nie mówi. Najpierw trzeba kostkę zidentyfikować, no i jeśli i2c no to jakiś programator który ją obsługuje. Odczytać zawartość, znaleźć identyfikator i podmienić (może być zapisany w formie little endian więc trzeba uważać).
  • Poziom 37  
    manekinen napisał:
    mkpl napisał:
    ISSI 423

    Chyba coś kolega źle odczytał z tej kostki, google nic o tym nie mówi. Najpierw trzeba kostkę zidentyfikować, no i jeśli i2c no to jakiś programator który ją obsługuje. Odczytać zawartość, znaleźć identyfikator i podmienić (może być zapisany w formie little endian więc trzeba uważać).


    Kość to ISSI 423 464-36
    Nogi 1, 2, 3, 4 podłączone do masy 5 i 6 podciągnięte do zasilania przez 15k i idą do procesora noga 7 podciągnięta do zasilania przez 5.1k (chyba blokada zapisu)

    W urządzeniu obok w Hubie usb jest identyczna kostka a w karcie sieciowej obok (wszystkie 3 urządzenia na jednej płycie) siedzi już typowa 3 wire 94C46s
    Więc drogą dedukcji stwierdzam iż tamta ISS jest i2c.
    Pojemności nie znam więc zastanawiam się jak odczytać jej zawartość tak aby jej nie uszkodzić

    Dodano po 2 [godziny] 27 [minuty]:

    mietekn napisał:
    A nie prościej zmienić identyfikator urządzenia w pliku inf sterownika?


    Udało mi się zmienić identyfikator urządzenia w pliku inf sterownika. O ile sam instalator nie pozwalał na instalacje urządzenia to ręczne wskazanie sterownika z pomocą opcji "pozwól mi wybrać ręcznie z listy sterowników na moim komputerze" instaluje katę bezproblemowo. Wszystko działa ok do pierwszego restartu komputera/odłączenia od usb.

    Później karta jest wykrywana poprawnie lecz z wykrzyknikiem i błędem 10
  • Poziom 29  
    A to faktycznie eeprom i2c :) Także nóżkę 7 do masy i można się bawić. Najlepiej ustawić w programatorze na jak największą i odczytać, będzie widać jaka pojemność (ile danych). I nie trzeba zmieniać całości, ale tylko to co nas interesuje :)
  • Poziom 37  
    Czy muszę wylutować pamięć z układu czy wystarczy, że podłączę się pod I2c?
  • Poziom 35  
    Jak poprawić plik inf:
    -otwierasz plik inf edytorem tekstu
    -szukasz ciągów wyglądających np w postaci: %Creative% %Blaster% = perm2, PCI\VEN_104C&DEV_3D07&SUBSYS_100F1102
    -poprawiasz cyferki VEN.... , DEV... i SYBSYS.. na takie jakie posiada Twoja karta
    -zapisujesz.
  • Poziom 37  
    mietekn napisał:
    Jak poprawić plik inf:
    -otwierasz plik inf edytorem tekstu
    -szukasz ciągów wyglądających np w postaci: %Creative% %Blaster% = perm2, PCI\VEN_104C&DEV_3D07&SUBSYS_100F1102
    -poprawiasz cyferki VEN.... , DEV... i SYBSYS.. na takie jakie posiada Twoja karta
    -zapisujesz.


    Dokładnie tak zrobiłem i ręcznie sterownik się instaluje karta jest widziana lecz z wykrzyknikiem i błędem 10 nie można uruchomić urządzenia

    Dodano po 1 [godziny] 19 [minuty]:

    manekinen napisał:
    A to faktycznie eeprom i2c :) Także nóżkę 7 do masy i można się bawić. Najlepiej ustawić w programatorze na jak największą i odczytać, będzie widać jaka pojemność (ile danych). I nie trzeba zmieniać całości, ale tylko to co nas interesuje :)


    Udało się odczytać EEPROM odczytałem jako 24C512. Nie jestem pewien czy to jest cały eeprom więc proszę o ewentualne sprawdzenie. Spodziewałem się ze koniec pamięci będzie jako 00FF lub 0000 choć końcówka w zasadzie się powtarza
  • Poziom 29  
    Może odczytywać zera jeśli układ jest wlutowany na płytce, bo... procesor który czyta ten eeprom w tej karcie, gdy nie jest zasilany, prawdopodobnie wymusza stan niski na liniach SCL i SDA. Trzeba by było te dwie nóżki podnieść i podciągnąć do VCC. Niestety programatora żadnego nie polecę bo te eepromki wykorzystywałem tylko w układach mikroprocesorowych.

    ...ok widzę że akurat kolega zmienił post kiedy ja napisałem :)

    Przerobiłem ten hex na bin, i wygląda na to że jest to kostka 8kB, potem dane się powtarzają kilka razy. Końcówka wypełniona tekstem "copyright creative technology, copy prohibited".

    Jaki jest ten identyfikator? Trzeba jeszcze to jakoś znaleźć :)
  • Poziom 37  
    Znalazłem na jakimś zagranicznym forum, że w ori SB live od creativa siedzi eeprom 24C64WP. Pamięć jest odłączona od procesora i linie podciągnięte są do zasilania przez 1.5k (tak jest na płycie)

    Karty różnią się tym
    Ori od Creative

    ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}

    %USB\VID_041E&PID_3040&MI_00.DeviceDesc%=SB0490_Device, USB\VID_041E&PID_3040&MI_00

    W mojej
    ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}

    %USB\VID_041E&PID_3048&MI_00.DeviceDesc%=SB0500_Device, USB\VID_041E&PID_3048&MI_00
  • Poziom 29  
    VID i PID są na początku, i tak jak myślałem zapisane w formie little endian, czyli zamienione bajty.
    Modyfikacja identyfikacji urządzenia usb w pamieci eeprom

    Więc powinna wystarczyć zmiana bajtu pod adresem 44, z "48" zrobić "40" i powinna się zgłaszać z nowym numerkiem. Gorzej jeśli jest tam jeszcze jakaś suma kontrolna :/
  • Poziom 37  
    Zmieniłem tak jak pisałeś lecz teraz identyfikator urządzenia ma wartość
    USB\VID_0451&PID_3200&REV_0000
    zamiast planowanego

    USB\VID_041E&PID_3040&MI_00.DeviceDesc%=SB0490_Device, USB\VID_041E&PID_3040&MI_00
  • Poziom 29  
    Hmm no to dziwne że wszystko się pozmieniało... być może jest to bardziej zawiłe niż się wydaje, być może tam dalej są zapisane też jakieś ważne dane.

    W załączniku daję swoją wersję, zmieniłem jedynie ten jeden bajt.

    Jak nie zadziała, może trzeba będzie znaleźć kogoś kto ma taką kartę i poprosić o zrzucenie zawartości?
  • Poziom 37  
    Wgrałem ale dopiero za 3 razem poszło i działa :) Karta wykrywana jako SB live 24 bit external. Działają wszystkie funkcje i sterowniki od Creativa się zainstalowały bezproblemowo.

    Bardzo dziękuję kolegom za pomoc :) nadmienię ,że to jedyne urządzenie które zostało odpalone z pełną funkcjonalnością pod windows 7
  • Poziom 37  
    gradek83 napisał:


    Kolego problem był w tym, że te sterowniki nie działają pod W7 a Creativa działają stąd ta cała przeróbka
  • Poziom 29  
    No to cieszę się że mogłem pomóc. Tak więc winę można zwalić na błędy zapisu. Może warto jeszcze zweryfikować ta pamięć, żeby w przyszłości jakieś problemy nie wystąpiły?
  • Poziom 37  
    manekinen napisał:
    No to cieszę się że mogłem pomóc. Tak więc winę można zwalić na błędy zapisu. Może warto jeszcze zweryfikować ta pamięć, żeby w przyszłości jakieś problemy nie wystąpiły?


    Oryginalna pamięć eeprom była już nieco zmęczona od podnoszenia padów i dolutowywania się do nich. Dlatego dałem nową przewlekana w zwykłą podstawkę i ona raz zapisana i było już ok.

    Jako, że tamtą programowałem przy zasilaniu z 3.3V (z karty) i programator na RS miałem z zenerkami na 3.3V mogło się coś namieszać choć przy weryfikacji była ok.

    Tak czy siak nowa programowana była napięciem 5V i poszło ok