MójDroid.pl

HOST USB dla Desire, Nexus One (QSD8250 SoC)

2011-02-21
|
Damian P.

Smartphone'y HTC zawsze czymś się wyróżniały wyróżniają. Przykładowo: stare XDA\SPV jako jedne z pierwszych posiadały zestaw WiFi-3G-GPS, a HD2 jako pierwszy model z Windows Mobile posiadał pojemnościowy wyświetlacz. Później powstał Android, który jak wiecie promowany był przez HTC Dream (G1). HTC najwidoczniej tempa nie zwalnia, bo podobne odkrycia nadal trwają. Tym razem, w niezbyt starym Desire odkryto... tryb HOST-USB? Co nam to umożliwia? Duuuuuuuuuużo rzeczy!

Na początek trochę teorii i wymagań.

Co to jest ten "HOST USB" ?
Host USB - specjalny tryb dla portu USB pozwalający na korzystanie z urządzeń peryferyjnych takich jak: pendrive i dyski zewnętrzne, czytniki kart, myszy, klawiatury i gamepady.
Brzmi nieźle, co? Fajnie było by podłączyć 250GB dysk do telefonu. I jest to możliwe, jeżeli wasz Desire spełnia poniższe warunki:

DOPISEK <JEŻELI POSIADASZ JUŻ ODPOWIEDNI KERNEL, PRZEJDŹ DALEJ> INSTALACJA KERNELA

  • Uruchom "z RAMu", tj w CMD wpisz:
    • /android-sdk/tools/fastboot boot arch/arm/boot/zImage
  • lub zapisz do pamięci flash (wypakuj ramdisk.img z "RA-passion nandroid backup")
    • /getramdisk.py /boot.img
      • Na PC…
        • /android-sdk/tools/fastboot -b 0x20000000 flash:raw boot arch/arm/boot/zImage /ramdisk.img
      • …lub na telefonie
        • /mydroid/out/host/linux-x86/bin/mkbootimg --kernel arch/arm/boot/zImage --ramdisk /ramdisk.img --base 0x20000000 -o boot.img adb push boot.img /sdcard adb shell flash_image boot /sdcard/boot.img reboot
Nic szczególnego, jak widać! Ale to tylko początek. Wymagany jest też specjalny kabel USB, który umożliwi nam podpięcie do HTC odpowiednich peryferii. Sam kabelek musi być zasilany, bo port microUSB w Desire zwyczajnie nie posiada zasilania (masło maślane?). Dokładna nazwa tego kabla to "USB OTG cable with Micro B plug". Z pewnością znajdziecie go w każdym sklepie do tego przeznaczonym. Sam kabel wygląda tak: link. Ewentualnie możemy użyć kabla Micro USB z adapterem. Jak pisałem - port microUSB nie posiada zasilania. Dlatego potrzebny jest nam też HUB USB. Nie jest to drogie urządzenie, dlatego bez problemu kupicie je choćby na allegro (HUB musi mieć zasilane porty! Inaczej zobaczcie to).

Uff... to tyle teorii. Czas na praktykę

Kontroler gier:
  • Podpinamy kabel USB i uruchamiamy ConnectBota.
  • W programie włączamy "fullscreen", po czym łączymy się do "local". su insmod drivers/usb/core/usbcore.ko # Ignore the Unbalanced enabled for IRQ 58 stack trace for now insmod drivers/usb/host/ehci-hcd.ko
  • Uzyskujemy połączenie TCP/IP (ewentualnie używamy poradnika Andrewa lub uzyskujemy USB Mode) adb
    • adb connect IP_address:5555
  • Dostęp do systemu plików
Po tych kilku krokach, wasz Desire będzie gotowy do współpracy. Kontynuujemy:
  • insmod drivers/hid/usbhid/usbhid.ko
  • Gamepad (market link do Gamepad IME)
    • insmod drivers/input/joydev.ko chmod 666 /dev/input/js*
Efekt: Pamięć masowa:
  • insmod drivers/usb/storage/usb-storage.ko # Wait for device enumeration mount -t vfat /dev/block/sda1 /mnt/sdcard/usb-storage
Internet:
  • insmod drivers/net/usb/usbnet.ko insmod drivers/net/usb/asix.ko dhcpcd eth1 setprop net.dns1 IP_address
Zewnętrzny monitor:
  • Sprzęt
  • Oprogramowanie
    • SlugTerm DL
      • mount -t usbfs none /proc/bus/usb /data/local/bin/slugterm -k /dev/input/event8 -p 0377 -i 00cfa43c4e5573712b7152ffffeeca0640e257fffffff904b00402907e -f /mnt/sdcard/usr/local/share/fonts/FON2FNT/dosapp_18.FNT -c /system/bin/sh
    • Framebuffer
      • insmod drivers/video/syscopyarea.ko insmod drivers/video/sysfillrect.ko insmod drivers/video/sysimgblt.ko insmod drivers/video/fb_sys_fops.ko # Source; delete select FB_DEFERRED_IO in Kconfig insmod drivers/staging/udlfb/udlfb.ko # Wait for device enumeration
      • Send to Framebuffer (link do aplikacji)
        • chmod 666 /dev/graphics/fb1
        • /system/build.prop: dalvik.vm.heapsize=42m
        • Framebuffer fb=new Framebuffer(1); Bitmap bm=fb.createBitmap(); fb.tranfer(bm, true);
Efekt:

Zabawy jest jeszcze więcej, ale nie chcę wszystkiego kopiować. Więcej na stronie autora i na XDA. Wszystko to za... mniej niż 10 złotych (nie licząc HUBa).