Sziasztok!
Segítségeteket szeretném kérni abban, Windowsnál hogyan lehet elérni, hogy I²C vonalat gondolja alapértelmezésnek a touchpad eléréséhez.
Részletesen is körbeírom a problémát, hogy érthető legyen, mit szeretnék.
Kiindulási állapot röviden
Adott egy Thinkpad P52, amiben nem működik a touchpad és a trackpoint.
Alapvetően létező probléma a gépnél, hogy egy korábbi firmware-frissítés kapcsán előfordul ez az állapot, ki is adtak egy-egy firmware-frissítést a touchpadhez és a trackpointhoz is emiatt.
A frissítés persze nem fut le a touchpad esetén inicializációs hibával, trackpoint esetében "transzparens módra" váltás sikertelensége miatt.
Hardver
Utánanéztem, a touchpad egy ún. SMBus interfészen van, ami Linux alatt i2c-0 eszközként látható.
Maga az interfész elérhető, néhány I²C eszköz válaszol is rajta Linux alól nézve.
Kapcsolási rajz alapján van a gépben két kapcsoló IC, egyik az SDA, másik az SCL vonalra.
Ez a kapcsolt rész megy el a touchpad szalagkábel-csatlakozójához (és az ebben a gépben nem kiépített NFC csatlakozójához is), és a touchpadtől megy tovább egy clock és egy data vezeték a trackpointhoz, ide más eszköz nincs kötve.
Nyilván a transzparens mód esetén a touchpad-ot váltja olyan állapotba, hogy a trackpointtal közvetlen tudjon kommunikálni ezen a vonalon.
Mérés
Alapvetően azt látom, hogy a gép rövid idővel bekapcsolás után próbál kommunikálni a touchpadnél lévő I²C kivezetéseken, vagyis a vonali kapcsoló IC-k jók lehetnek, mind az órajel, mind az adatlábon látok kommunikációt.
(Jelalak vizsgálatához komolyabb oszcilloszkópot kellett volna elővennem, de egyelőre azt is elég volt látnom, hogy megvannak a felhúzások, megvan a touchpad tápja, és jónak tűnik az adatvonal kommunikációja, valószínűleg jelalakja is.)
Tehát elvileg minden jó, de mégsem.
Probléma
Alapvetően visszatérve a frissítőprogramra, annak futása során a touchpad csatlakozóján nem látok kommunikációt az I²C vonalon.
...viszont a frissítő logját vizsgálva feltűnt ez a sor:
"default interface: PS2"
Magyarul "PS2" interfészen keresztül próbálja a touchpad frissítését elvégezni, ami soha nem fog menni egy csak I²C vonalon kapcsolódó eszköznél.
...és ennek fényében nem annyira furcsa, miért nem látok kommunikációt a frissítési próbálkozás során azon az I²C vonalon, amin a gép indulásakor egyértelmű kommunikációt látok.
Tehát jelenleg a frissítés teljes bizonyossággal félrefut, nem megfelelő interfészen próbálkozik.
Kiegészítő információ
Több helyen találni fórumokon panaszokat ezzel a problémával kapcsolatban, itt olvastam azt is, hogy, ha a touchpad-et átrakja valami bootloader üzemmódba, abból egy firmware-frissítés fogja csak kihozni.
A probléma Windowsos része
Az alapvető hiányosság, hogy frissen telepítettem fel a gépre egy Windows 10-et, vagyis ez a rendszer sohasem látta a gép I2C touchpadjét, így ebben a tekintetben alapértelmezésekkel működik.
A "beszédes" (fwupdate.exe) nevű program emiatt nem az ún. SMBus nevű I²C eszközön próbál frissíteni, ahogy kellene neki, hanem PS2 vonalon küldözget, ami nyilván nem ér célt.
Megoldás lehetősége
Valószínűleg megoldást adhatna elindítani a rendszert egy olyan gépen, amin szintén I²C interfészen "lóg" a touchpad.
Legjobb lenne egy ugyanilyen, de működő másik gépen beállított rendszert áttenni ebbe a gépbe, erre lesz lehetőségem talán néhány napon belül vagy jövő héten.
Kérdés kicsit másképpen
A fentiek tükrében van esetleg valamelyikőtöknek ötlete arra, vajon honnan veheti a frissítő program, hogy PS2 interfészen kellene elérnie a touchpad-et, esetleg mit és hol kellene a registryben módosítanom, hogy az "i2c-0 / SMBus" interfészhez akarjon kapcsolódni, ahol az eszköz valójában van?
Azt valahogy nagyon nehezen tudom megérteni, hogy, ha van egy gép, amihez frissítést adnak ki, és ismert, hogy csak I²C vonalon tud kommunikálni az eszköz, amihez a frissítés készült, akkor miért nem oldják meg magában a programban, hogy legalább valamilyen I²C vonalat keressen és ne csak vakon valami "default" interfészen akarjon adatot küldözgetni?
(Költői kérdés, nyilván univerzális eszköz, valamint így volt egyszerűbb, parancssori kapcsolókat is minek beletenni.)
Van valakinek esetleg ötlete, hogyan lehetne rábeszélni a megfelelő interfészre?
Alapvetően registry-módosításra gondolok, hátha van itt, aki ismeri a rendszer ezen részének a működését.
Esetleges ötleteket köszönöm előre is.
Hozzászólások
Ha a Lenovo-s recovery mediáról telepíted fel, akkor sem működik?
https://pcsupport.lenovo.com/hu/en/products/laptops-and-netbooks/thinkp…
Vagy az is lehet, hogy nincs az i2c buszhoz driver, így nem találja meg.
Ezt még nem próbáltam, köszönöm - bár félek, ez nem sokban különbözik egy normál Windows telepítőtől.
Éppen töltöm, kicsit rapszodikus sebességgel érkezik...
Driverből elvileg fent van az összes, a touchpadhez tartozó is, csak azt nem volt mihez telepítenie... gondolom.
Kérdőjeles hardver nincs az eszközkezelőben, bár nem tudom, milyen formában kellene látnom a kérdéses eszközt.
(Touchpad és trackpoint mint felismerhető eszköz sajnos jelenleg nem létezik a gépen.)
Megpróbáltam feltenni a rendszert a Lenovo recovery-ből egy másik SSD-re... eltartott egy jó darabig neki a folyamat, de magától feltette az összes drivert.
...viszont ugyanúgy PS2 interfészen szeretne frissíteni a firmware updater...
Valószínűleg nagyon kellene neki, hogy egyszer fizikailag is lássa az eszközt és rendesen be tudja állítani hozzá a rendszert.
Ha szimplán az USB egérnek mondom, hogy használja az ELAN-féle drivert, akkor persze panaszkodik, hogy nem tudja elindítani és az egér megszűnik működni, de a firmware-frissítő továbbra is PS2 interfészen dolgozna... újraindítás ide vagy oda.
"Nagyon jól" kitalálták ezt a Lenovo-s srácok...
A Lenovo fórumról:
Pedig akkor még AI programozók se voltak.
Amúgy Linuxon se megy?
Ez a megoldás is vicces:
Írnak sokfelé sokfélét, de a touchpad és trackpoint firmware logban konkrétan benne van ez a hibajelenség mint olyan, amire megoldást ad.
(Egyik esetben trackpoint firmware frissítése utáni touchpad és trackpoint működésképtelenségének javítását írják, másik esetben pedig a trackpoint firmware-frissítése során megsérült touchpad firmware javításáról írnak.)
Egy helyen olvastam olyat is, hogy először ugyanazokat a hibaüzeneteket kapta mint én, majd végül végigment neki a frissítés.
Közzétette a sikeres és sikertelen frissítéshez tartozó logot is, de később nem találtam meg, amikor rájöttem, mi lenne érdekes a logban...
Tehát megoldást biztosan adtak rá, csak finoman szólva nem tökéletes a dolog.
A fenti linkkel az a baj, hogy a konkrét firmware már nem elérhető, annak egy későbbi változata tölthető le a Lenovo-tól.
Azt jelenleg nem tudom, a 1709-es változat mint tipp telepítése mennyire működne - egy régebbi verzión próbáltam, de nem tudom, melyik build volt.
Valahonnan veszi a frissítő, hogy PS2 porton van a touchpad, valahogy nem bízom benne, hogy a régebbi Windows-verzión automatikusan "SMBus" lesz az alapértelmezett interfész - valamivel ezt kellene befolyásolni.
Azt is írta valaki, hogy bekerült ilyen állapotba a gépe, és bekötött egy másik elfekvő ugyanilyen touchpad-et neki, és úgy sem ment...
Nem megy Linuxon sem, nem ismeri fel az eszközöket (meg sem jelenik a logban), csak annyit tudtam megnézni, hogy a kérdéses I2C buszon lát néhány eszköz-címet... de azt nem tudom, melyiknek kellene a touchpad / trackpointnak lennie, illetve bootloader üzemmódban ebből mi látszik itt.
Elvileg, ha hinni lehet ennek, bootloader üzemmódban van a touchpad, ebből az állapotból kellene kihozni.
(...vagy, ha nem is, betehető bootloader állapotba, ahonnan meg lehet tenni a frissítést...)
Egyébként a frissítés mellett ott van a konkrét bináris, amit be kellene töltenie, de nem tudom, konkrétan mi a frissítés folyamata az I2C buszon ennél az eszköznél, esetleg van-e Linuxos megoldás erre.
Nyilván az általános firmware-frissítő megoldás nem is látja ezt a hardware-t.
Linuxra ez esetleg?
https://bbs.archlinux.org/viewtopic.php?id=241884
Meg kellene revengelni azt az updatert. A touchpadek egy ún HID over I2C protokollt használnak ami kvázi szabvány, van hozzá standard driver is. A PS2 nem tudom, hogy jöhet a képbe. Én amúgy a Elan-nál nézelődnék, mert az összes ilyen vendor (esetünkben Lenovo) FW updater kb. úgy néz ki, hogy az OEM beszállító (esetünkben Elan) megoldását (exe6dll) körülöntik egy adag takonnyal és odaadják a t. usernek, hogy szopogassa.