2024. március 28., csütörtök

Gyorskeresés

ZTE Blade USB hoszt mód

Írta: | Kulcsszavak: zte blade . usb host . otg

[ ÚJ BEJEGYZÉS ]

Nagyon sokan kérdezték tőlem, hogyan sikerült a ZTE Blade androidos készüléknél az USB host módot engedélyeznem, ezért közzéteszem ezt a személyes bejegyzést.

FONTOS! Ezen bejegyzés (NEM pedig cikk) elsősorban hozzáértőknek ajánlott!
FONTOS! Az USB host mód egy erősen kísérleti mod! Ha aktiválva van, nem csatlakoztatható a mobil PC-hez!
FONTOS! Ha az USB host mód aktiválva van, akkor nem lehet elérni a mobilt ADB-n és az SD kártya sem elérhető PC-ről!
FONTOS! Bármilyen módosítás előtt készítsünk rendszerünkről teljes backupot!
FONTOS! A működésért, esetleges károkért (pl. téglásodás) NEM vállalok semmiféle felelősséget, csak saját felelősségre!
FONTOS! A témához NEM nyújtok semmiféle támogatást!

Kettő (!) USB billentyűzet és egy USB egér egyszerre (!) csatlakozik egy Blade-hez

Az alábbiakban találhatjátok a proof-of-concept videót:

http://www.youtube.com/watch?v=B1ydScM0sXU

A következő bekezdésben a témában kevésbé jártasaknak vázolnám az alapvető ismereteket.

FYI: a Blade (mint a többi androidos készülék) alapesetben kliens (slave) módban csatlakozik a számítógép USB host (master, szerver) vezérlőjéhez. A Blade SoC-a (System on Chip, típusa: Qualcomm MSM7227) hardverileg támogatja a host módú működést is (értsd: a mobil is viselkedhet USB hostként, mint egy PC, így USB perifériákat csatlakoztathatunk hozzá, ha adott a szoftveres támogatás). A szoftveres támogatás alatt a megfelelő (USB host enabled/engedélyezett) Linux kernel, kernelmodulok és megosztott függvénykönyvtárak memóriába (illetve a NAND megfelelő könyvtáraiba) való betöltését (illetve felmásolását, elérhetővé tételét) értem. Visszatérve a hardverhez: Az USB hosthoz a Blade esetében mindenképpen szükséges egy speciális, Y-alakú USB-kábel (mivel a mobil USB host vezérlője nem biztos hogy szolgáltat a perifériáknak elegendő áramot). Ezt könnyen elkészíthetjük, boltban azonban nehéz beszerezni (a leírását lásd lentebb).

Milyen USB perifériák csatlakoztathatók?
- billentyűzet (a legtöbb vezetéknélküli billentyűzet, egér NEM működik!)
- egér
- pendrive, külső merevlemez SATA/IDE-USB átalakítóval és extra árambetáplálással (elvileg működik, gyakorlatilag nekem nem sikerült működésre bírni), másik, kliens módban működő Blade :) , digitális fényképezőgép, egyéb USB Mass Storage osztályú USB eszköz
- botkormány
- gamepad
- speciális eszközzel (pl. DisplayLink): monitor (DVI), hangszóró, Ethernet, TV (HDMI), DVB-T adapter

A következő négy pontban összefoglalnám, mi szükséges az USB host mód aktiválásához:

1. Operációs rendszer és firmware Egyelőre csak Android 2.1 rendszeren működik a Blade esetében az USB host. Tehát szükséges egy rootolt 2.1-es Android. A modhoz Gen1-es firmware kell (a firmware generációkról lásd a személyes bejegyzést a Logout blogomban).
2. Megfelelő kernel Szükséges lecserélni a boot partíció tartalmát Sven Killig boot.img lemezképére. Ez tartalmazza a (csak!) host módban működő kernelt. FIGYELEM! Ekkor kliens (slave) módban NEM fog működni a mobil! Ez azt jelenti, hogy pl. nem tudod pendriveként csatlakoztatni az SD-jét egy PC-hez. Megjegyzés: kettő USB host módú eszköz összekötéséhez speciális, elektronikával (mikrokontrollerrel) rendelkező USB-kábel + szoftveres támogatás szükséges.
A téma szakértőinek: az USB host enabled kernel config fájljában fordítás előtt engedélyezték az USB host módot, illetve esetlegesen belefordítottak néhány abszolút szükséges modult. Mivel a kernel mérete gzippelve kisebb kell hogy legyen mint 3-4 MB a platform sajátosságai miatt, ezért az ilyen modulok száma minimalizált. Ezért van szükség a következő pontban említett kernelmodulokra.
3. Kernelmodulok Ezután bebootolod az új kernellel a 2.1-es rendszert, majd terminál emulátorból (rootként) a kernelhez csatolsz kernelmodulokat (*.ko fájlok, ~ driverek a csatlakoztatandó USB perifériákhoz: billentyűzet (igen, ahhoz is kell driver), egér, pendrive, akár hangkártya, monitor, Ethernet-kártya stb. ; az utóbbi 3-4 periféria a Blade-nél nincs megfelelően implementálva -- értsd: elvileg működhetne, DE nincs meg a megfelelő szoftveres háttér a működéshez, így NEM működik). A kernelhez csatolást az insmod paranccsal lehet megtenni. A kernel objectek (innen a ko kiterjesztés) felfoghatók shared objectekként is (megosztott objektumfájlok, bináris (lefordított) függvénykönyvtárak, a windowsos terminológiában ilyenek a Dynamic Linking Library-k, azaz a dll fájlok.) A billentyűzet, egér jó eséllyel működni fog, pendrive-ot nem sikerült mountolnom. A ko fájlokon túl szükséges egyéb függvénykönyvtárak bemásolása is, általában a /system/lib/modules helyre (ezek shared object fájlok, a perifériák kezeléséhez szükséges speciális rutinokat tartalmazzák).
A futási időben a kernelkódhoz csatolt kernelmodulokat minden indításnál csatlakoztatni kell: ezért célszerű egy indításkor lefutó parancsfájlba (a /system/etc/init.d/ könyvtárba) ezt beírni. A system partíciót az írása előtt rw opcióval remountoljuk.
4. Speciális Y-alakú kábel FYI: Y-alakú kábel: olyan különleges USB-kábel, aminek mindkét végén female USB-csatlakozó van, és erre rá van kötve egy male USB-dugó, DE csak elektromosan (tehát csak a két szélső kábel csatlakozik). Az egyik USB-csatlakozóra kell kötni az USB perifériát, a másikra a mobilt a saját USB-kábelével, az Y-alakú kábel USB-dugóját pedig USB-s áramforráshoz (pl. a telefon töltőjéhez) kell csatlakoztatni.
Az Y-alakú elosztó kábelt egyszerre szükséges csatlakoztatni a töltőhöz, a Blade-hez és az USB perifériához. Ha mindent jól csináltál pl. egy USB billentyűzettel lehet vezérelni a mobilt. Az USB-s egér is működik (de nincs kurzor, az egér mozgatáskor nyílbillentyűk bináris karakterkódjait küldi, nincs kurzor implementálva). Ezekből akár többet is egyidőben a Blade-re csatlakoztathatsz, de nem szabad megfeledkezni a megfelelő árambetáplálásról! Már egy billentyűzetnél is szükséges extra árambetáplálás (értsd: csatlakoztatott töltő), több eszköznél esetleg powered hub.

A fentebb említett boot.img, *.ko, és esetlegesen egyéb *.so fájlokat (függvénykönyvtárak) letöltheted a következő weblapról (az img, ko, so kiterjesztésű fájlok lefordított binárisok, esetünkben ARM architektúrára (armeabi, armel), figyelembe véve a Blade jellegzetességeit):

http://sven.killig.de/android/Blade/usb_host/

Sven Killig először Nexus One-ra csinálta meg az USB host mód aktiválását. Ajánlott mind a Nexus One, mind a Blade host mód leírásainak tanulmányozása. Ezeket megtalálhatók a fenti címen. Természetesen a Blade esetében csak a Blade-hez közétett fájlokat szabad használni.

Újabb kernelhez (így 2.1-nél újabb Androidhoz) sajnos nem tudok semmilyen megoldást. Nyilván rom-ba nincs sok értelme USB host módot integrálni, mivel alapesetben ekkor csak hostként működik az eszköz. Az USB OTG (On-the-Go, dinamikus, hw-es váltás a host/client módok között) rom-ba integrálásnak viszont több értelme lenne, azonban tudomásom szerint ez Blade-nél nincs megfelelően implementálva (bár a SoC minden bizonnyal támogatja).

A téma szakértőinek: Sven Killig honlapjáról letölthetők a kernel objectek forráskódjai (C és header fájlok), továbbá a kernel patchei is. Az eredeti 2.6.29-es Linux kernel forráskódja letölthető a gyártó honlapjáról. A megfelelő boot.img összeállításához szükség van további scriptekre is. Az USB-s beviteli eszközök közül kizárólag az ehci-hcd modulra támaszkodók működnek. Ezért nem működnek a kizárólag HID protokollt használó, többségében vezetéknélküli billentyűzetek/egerek.
Saját boot.img fordításához a ramdiszket egy szintén 2.6.29-es kernelt tartalmazó boot.img fájlunkból kicsomagolhatjuk. A kernelkód címe a boot.img-ben: 0x03000000.

Hozzászólások

(#1) DarkL95


DarkL95
újonc

Szia! Nem tudod esetleg, hogy mikor jelenik meg GEN2 -es változatban? :U (cm 7.1/andro. 2.3.7 nightly)

(#2) Kori_27


Kori_27
csendes tag

Helló!
Utána olvastam a témának, és már létezik CyanogenMod-ra is, természetesen GEN2, a 2.6.32.9 verziójú kernel módosulata, ami mindkét módot támogatja. Ha egy gnd-re kacsolt ID pinnel rendelkező OTG kábelt kötünk a Blade-re, reboot után host, ha simát, reboot után slave (persze ha 2x egymás után azonosat kötünk rá, nincs reboot :D ) Na most az lenne a kérdésem, hogy esetleg nem tud-e valaki kernel-t módosítani, ugyanis azóta kijött a CM 7.1.0 stabil verzió, immár 2.6.35.7pref+ kernellel, és jó lenne, ha erre is létezne egy stabil, kiforrt kernel. Ugyanis nekem a t0mm13b féle újabb kernel sem müxik, és mivek annak a topicja meghalt, nem tudtam segítséget kérni... Ezért gondoltam rád/rátok, hátha vki egy kis szemrevételezés után hozzá tudna szólni. Esetleg külön instmoddal kell betölteni a modulokat itt is? Egyébként ha valaki bevállalná a kernelfejlesztést, esetleg beavatna annak rejtélyeibe, szívesen csatakozok a témához, le is tesztelem a kerneleket, ha valaki tud segíteni moddolásban, nagyon megköszönöm.
[Link a kernelhez]
-->Itt két fájlt találtok, a fejlesztő szerint mindkettőt installálni kell. Valaki ötlet, mit rontok el?

Android4ever, Blade a király!!! :DD

[ Szerkesztve ]

“Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja.” (Albert Einstein)

(#3) DarkL95


DarkL95
újonc

Köszönömm :R :R :R :R :R :R :R :R :R
És ja a Blade a király :DD

(#4) kmisi99


kmisi99
addikt

Ne már erre a telefonra minden van kár hogy eladtam az LG optimus 2x emre meg van kb semmi.

(#5) DarkL95


DarkL95
újonc

Ja ha nem települ fel, akkor próbáld meg úgy, hogy előtte dalvik catch wipe, ha feltelepítetted, akkor utána is nyomsz egyet! De megpróbálom én is!

(#6) DarkL95


DarkL95
újonc

Basszus most nézem, hogy az én kernelem jóval újabb mint ez...Azért megpróbáltam elindítani, de leállt az android figuránál, így visszaraktam a régi kernelt... Amúgy ha megáll a rendszerbetöltés az android figuránál (vagyis még bekapcsol) akkor biztos, hogy nincs elcseszve a teló!!! (tapasztaltam párszor :DD )

(#7) Kori_27


Kori_27
csendes tag

Tudom, nem a legújabb kernel, de csak ezt találtam... :( Nightly 175tel most tesztelgetem de nem akar nagyon működni, arra gondolok, talán instmod-dal terminal emulatorból külön be kéne rakni a modokat recovery-s telepítés után??? Valaki hozzáértő help plíííz :D Ja, és még egy hozzáértő emberkét is szeretnék megkérdezni, hogy nem lehetne-e rebuid-elni a legújabb 2.6.35.7-pref+ -os kernelt az ebből a kernelből kiszedett otg moddal? vagy vhogy belerakni a régebbi alapján? (sry ha hülyeséget mondok, fogggggalmam sincs mi van egy kernelben :DD )

“Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja.” (Albert Einstein)

(#8) Kori_27 válasza DarkL95 (#6) üzenetére


Kori_27
csendes tag

ja, akk még menthető :D. Ha a piros led elalszik, nyugivan... legvégső esetben is ott a bootloader. meg am ha a recoveryhez nem nyúlsz sosem cseszed el, még ha nincs is rajt rom, betölti a recoveryt.
Viszont én azon gondolkodtam, hogy ezek a bladecskék nem ROMostul potyognak ám le a gyártósorról, bizony fel kell flashelni őket, úgy, hogy totál semmi nincs rajtuk. Erre szolgálnak a hátulján a sim kártya mellett a lyukakban a kis réz pöttyöcskék. Valami olyasmi lehet, mint a régi nokiáknál az MBUS/FBUS kábel, amivel bootanim-ot is lehet cserélni meg flashelni meg minden, csak ott az akku alatt volt ilyen flasher csati (nézzétek csak meg, akár bladen, akár nokián, téglafonja úgyis van mindenkinek :D) Szóval egy szétbontott pengében meg kéne nézni a lábkiosztását a flasher portnak, meg kitalálni, milyen protokollt használ, mert így az el-TPT-zett darabok is menthetők lennének egy egyszerű hommade kábellel. Tapasztaltabbak hozzászólásait várom, esetleg, ha lesz pár érdeklődő, megér sztem egy új topicot is. Sok halott pengét lehetne így megmenteni, jó lenne, ha tudna vki segíteni.
Alább bemutatom amit eddig tudok ezen csatlakozók kivezetéséről.

Ez a kép a SIM-kártya tartóját , és a felette lévő négy pöttyöt illusztrálja, a vonalak mutatják melyik hova csatlakozik:

.*. * .* .*
..| ..\ ..\ .\
..{} .{} .{} .|
............./
..{}. {} .{}

Az akku feletti hatos csati, itt csak a tápellátást találtam, a többi gondolom a belső elektronikával van kapcsolatban.
* *
* * '''''''' USB +5Volt
* * '''''''' GND

USB melletti kettes csati:

* *
|.. \
D- D+ (USB data kivezetése)

UI: a pici pontok képeken csak helykitöltő szerepet szolgálnak (a sok spacet magától törli) ez ne zavarjon meg bennteket.

[ Szerkesztve ]

“Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja.” (Albert Einstein)

(#9) DarkL95


DarkL95
újonc

Egész jó ötlet!! (Nem is tudtam, hogy a SIM kártya alól is ki lehet nyerni áramot :D:D)
Ha nem nagy baj, nem a Pengén fogom tesztelgetni :DD , inkább (ahogy írtad) egy régi Nokiával :C

(#10) Kori_27


Kori_27
csendes tag

Nem pont az áramra gondoltam, mivel azt csak akkor tudsz szedni róla, ha USBre van kötve. Nekem az áram betáplálás jutott eszembe, hogy a hátlapba süllyesztek egy nagyon vékony, egy rétegű tekercset, és azt, ha a hátlap rajta van, ott vezetem bele. ha az asztallapba szontén egy nagyobb, vasmagos tekercset süllyesztek, lám máris megvan a vezeték nélküli töltő( csak leteszed és kész :D) no azért egy 5Volt stabilizátor nem árt... Na meg persze a téglaflashelés...

Háth igen, a fejlesztés drága. Esetleg ha olcsón hozzá tudnék jutni egy full téglás pengéhez, akk talán szórakoznék vele. Meg alapból a garisat nem szedem szét (most moddolom vissza Tmobosra, megy vissza hangszóró miatt :((( )

Amúgy megvan a kernel hibája, az a rohadt töltő csinált belőlem bolondot ;]
Ha fali töltőt érzékel, esze ágában sincs megnézni az USBt. Gépről adtam neki 5 voltot, máris észrevette a PEN-t, de most meg config fájlt hiányol, úgyhogy nem igazán vagyok előbbre, de így legaláb van egy kis pislákoló fényecske az alagútban (remélem a végén :D), amin el tudok indulni :C
Sokan nem igazán foglalkoznak vele, csak kísérleti szinten, mivel (ezek szerint xD) csak nekem jutott eszembe, hogy egy 9voltos elem egy fél amperes 5 voltos stabilizátorral simán elvisz PENt, billentyűzetet, egeret, nem kell konnektor. Így, ahogy a neve is mondja, tényleg on the go (úton is használható) :D Csak mindenki eldobja az ötletet, mert otthon úgy is van gép, minek konnektorról szarakodni.
Ha lesz érdemi eredmény, mindenképp kiírom.

Egyébként rá kell jönnöm, hogy a kici cuki occó kinai kisz telefon bizony milliónyi lehetőséget rejt, hihetetlen, mi van benne az árához képest. Ennyire moddolható teló kevés van ilyen árban... leginkább 1 xD ami a blade. USBn keresztül gyakorlatilag bármi megvalósítható, hisz driver van... Akár még, persze az is idő meg modding éjjelnappal :D, 480*800 HDMI kimenetet is lehetne belőle fabrikálni, ami azért nem lenne rossz. Na tessék, itt a végcél, jöhetnek az ősz hajszálak :))

[ Szerkesztve ]

“Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja.” (Albert Einstein)

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.