1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

USB Host Mode

Dieses Thema im Forum "Root / Hacking / Modding für Motorola Milestone" wurde erstellt von bravus, 10.02.2010.

  1. bravus, 10.02.2010 #1
    bravus

    bravus Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    17
    Registriert seit:
    06.09.2009
    Gerade diesen Artikel gelesen:
    USB Host mode on Motorola Droid Chris Paget's Blog

    Demzufolge kann zumindest die USB-Hardware im Droid im USB Host Mode agieren, d.h. man kann Geräte wie USB-Sticks, Webcams, externe Keyboards etc. anschließen. Werd mir den nötigen Adapter mal basteln und Euch auf dem Laufenden halten, ob's beim Milestone funktioniert. Wäre natürlich wirklich der Kracher. Unbegrenzte Möglichkeiten was Zubehör und Connectivity angeht. Hier mal ein paar Ideen:

    - VGA-Adapter, um z.B. seinen LCD-Fernseher oder einen Beamer anzusteuern
    - USB-Stick (Datensicherung)
    - den Cradle für meinen Livescribe (www.livescribe.de)
    - nen Drucker

    und und und.

    Was sagt Ihr dazu?
     
  2. royalcs, 10.02.2010 #2
    royalcs

    royalcs Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    13.12.2009
    ...sicher nur mit modifiziertem kernel... also vorerst nicht für das milestone...
     
  3. rodemkay, 11.02.2010 #3
    rodemkay

    rodemkay Fortgeschrittenes Mitglied

    Beiträge:
    257
    Erhaltene Danke:
    12
    Registriert seit:
    14.12.2009
    Phone:
    Motorola Milestone
    Mir würde es schon reichen wenn ich meinen MP3 Stick damit neu befüllen könnte habe schon länger mit der Möglichkeit geliebäugelt.

    Das mit dem Kernel könnte wirklich ein Problem darstellen.
     
  4. Target, 11.02.2010 #4
    Target

    Target Junior Mitglied

    Beiträge:
    43
    Erhaltene Danke:
    7
    Registriert seit:
    09.07.2009
    Phone:
    Motorola Milestone
    Laut den Kernel Sourcen von Motorola ist der Treiber für OTG bereits vorhanden


    /*
    * otg.c -- USB OTG utility code
    *
    * Copyright (C) 2004 Texas Instruments
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    */

    #include <linux/kernel.h>
    #include <linux/device.h>

    #include <linux/usb/otg.h>

    static struct otg_transceiver *xceiv;

    /**
    * otg_get_transceiver - find the (single) OTG transceiver
    *
    * Returns the transceiver driver, after getting a refcount to it; or
    * null if there is no such transceiver. The caller is responsible for
    * calling otg_put_transceiver() to release that count.
    *
    * For use by USB host and peripheral drivers.
    */
    struct otg_transceiver *otg_get_transceiver(void)
    {
    if (xceiv)
    get_device(xceiv->dev);
    return xceiv;
    }
    EXPORT_SYMBOL(otg_get_transceiver);

    /**
    * otg_put_transceiver - release the (single) OTG transceiver
    * @x: the transceiver returned by otg_get_transceiver()
    *
    * Releases a refcount the caller received from otg_get_transceiver().
    *
    * For use by USB host and peripheral drivers.
    */
    void otg_put_transceiver(struct otg_transceiver *x)
    {
    put_device(x->dev);
    }
    EXPORT_SYMBOL(otg_put_transceiver);

    /**
    * otg_set_transceiver - declare the (single) OTG transceiver
    * @x: the USB OTG transceiver to be used; or NULL
    *
    * This call is exclusively for use by transceiver drivers, which
    * coordinate the activities of drivers for host and peripheral
    * controllers, and in some cases for VBUS current regulation.
    */
    int otg_set_transceiver(struct otg_transceiver *x)
    {
    if (xceiv && x)
    return -EBUSY;
    xceiv = x;
    return 0;
    }
    EXPORT_SYMBOL(otg_set_transceiver);

    ich denke mal - das die Whitelist nur noch gepflegt werden müsste welche Devices "erlaubt" sind

    /*
    * drivers/usb/core/otg_whitelist.h
    *
    * Copyright (C) 2004 Texas Instruments
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    */

    /*
    * This OTG Whitelist is the OTG "Targeted Peripheral List". It should
    * mostly use of USB_DEVICE() or USB_DEVICE_VER() entries..
    *
    * YOU _SHOULD_ CHANGE THIS LIST TO MATCH YOUR PRODUCT AND ITS TESTING!
    */

    static struct usb_device_id whitelist_table [] = {

    /* hubs are optional in OTG, but very handy ... */
    { USB_DEVICE_INFO(USB_CLASS_HUB, 0, 0), },
    { USB_DEVICE_INFO(USB_CLASS_HUB, 0, 1), },

    #ifdef CONFIG_USB_PRINTER /* ignoring nonstatic linkage! */
    /* FIXME actually, printers are NOT supposed to use device classes;
    * they're supposed to use interface classes...
    */
    { USB_DEVICE_INFO(7, 1, 1) },
    { USB_DEVICE_INFO(7, 1, 2) },
    { USB_DEVICE_INFO(7, 1, 3) },
    #endif

    #ifdef CONFIG_USB_NET_CDCETHER
    /* Linux-USB CDC Ethernet gadget */
    { USB_DEVICE(0x0525, 0xa4a1), },
    /* Linux-USB CDC Ethernet + RNDIS gadget */
    { USB_DEVICE(0x0525, 0xa4a2), },
    #endif

    #if defined(CONFIG_USB_TEST) || defined(CONFIG_USB_TEST_MODULE)
    /* gadget zero, for testing */
    { USB_DEVICE(0x0525, 0xa4a0), },
    #endif

    { } /* Terminating entry */
    };

    static int is_targeted(struct usb_device *dev)
    {
    struct usb_device_id *id = whitelist_table;

    /* possible in developer configs only! */
    if (!dev->bus->otg_port)
    return 1;

    /* HNP test device is _never_ targeted (see OTG spec 6.6.6) */
    if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a &&
    le16_to_cpu(dev->descriptor.idProduct) == 0xbadd))
    return 0;

    /* NOTE: can't use usb_match_id() since interface caches
    * aren't set up yet. this is cut/paste from that code.
    */
    for (id = whitelist_table; id->match_flags; id++) {
    if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
    id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
    continue;

    if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
    id->idProduct != le16_to_cpu(dev->descriptor.idProduct))
    continue;

    /* No need to test id->bcdDevice_lo != 0, since 0 is never
    greater than any unsigned number. */
    if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
    (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice)))
    continue;

    if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) &&
    (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice)))
    continue;

    if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) &&
    (id->bDeviceClass != dev->descriptor.bDeviceClass))
    continue;

    if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
    (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass))
    continue;

    if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
    (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
    continue;

    return 1;
    }

    /* add other match criteria here ... */


    /* OTG MESSAGE: report errors here, customize to match your product */
    dev_err(&dev->dev, "device v%04x p%04x is not supported\n",
    le16_to_cpu(dev->descriptor.idVendor),
    le16_to_cpu(dev->descriptor.idProduct));
    #ifdef CONFIG_USB_OTG_WHITELIST
    return 0;
    #else
    return 1;
    #endif
    }
     
  5. yanardag, 11.02.2010 #5
    yanardag

    yanardag Android-Experte

    Beiträge:
    700
    Erhaltene Danke:
    67
    Registriert seit:
    15.01.2010
    Entweder ist das sehr gut oder sehr schlecht... :D
     
  6. royalcs, 12.02.2010 #6
    royalcs

    royalcs Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    13.12.2009
    Also auf dem Droid scheinen zumindest usb keybords unterstützt zu werden. Hat das schon jemand getestet? Welche Pins sind das denn die für das USB OTG Dongle kurzgeschlossen werden?
     
  7. bemymonkey, 14.02.2010 #7
    bemymonkey

    bemymonkey Android-Guru

    Beiträge:
    3,926
    Erhaltene Danke:
    351
    Registriert seit:
    06.12.2009
    Phone:
    Galaxy Nexus
    Was wann wo? Das wär' ganz praktisch...
     
  8. ninjafox, 14.02.2010 #8
    ninjafox

    ninjafox Android-Guru

    Beiträge:
    3,062
    Erhaltene Danke:
    690
    Registriert seit:
    13.01.2010
    Phone:
    LG G4
    wie wärs wenn man den link im ersten beitrag anklickt und es da nachliest...
     
    bemymonkey bedankt sich.
  9. bemymonkey, 14.02.2010 #9
    bemymonkey

    bemymonkey Android-Guru

    Beiträge:
    3,926
    Erhaltene Danke:
    351
    Registriert seit:
    06.12.2009
    Phone:
    Galaxy Nexus
    Aha, zu ende lesen hilft wohl... ich ging davon aus, dass (zumindest im Post von royalcs) von der Unterstützung _ohne_ Hardwaremods die Rede war :(
     
  10. ninjafox, 14.02.2010 #10
    ninjafox

    ninjafox Android-Guru

    Beiträge:
    3,062
    Erhaltene Danke:
    690
    Registriert seit:
    13.01.2010
    Phone:
    LG G4
    den comments nach zu urteilen kannste dir auch ein usb hostkabel kaufen bei ebay... gibts ab ~ 4€
     
  11. bemymonkey, 14.02.2010 #11
    bemymonkey

    bemymonkey Android-Guru

    Beiträge:
    3,926
    Erhaltene Danke:
    351
    Registriert seit:
    06.12.2009
    Phone:
    Galaxy Nexus
    Klingt eher, als wüssten die auch nicht genau, ob die funktionieren...

    Sind bei einem "echten" USB-Host Kabel (z.B. das für das N810) schon entsprechende Pins für den Bootvorgang umgelötet? Oder bräuchte man zusätzlich noch das angesprochene "Micro-Dongle"?
     
  12. rodemkay, 15.02.2010 #12
    rodemkay

    rodemkay Fortgeschrittenes Mitglied

    Beiträge:
    257
    Erhaltene Danke:
    12
    Registriert seit:
    14.12.2009
    Phone:
    Motorola Milestone
    gibt es denn schon eine richtige anwendung oder ist das alles noch theoretischer natur ?

    als könnte man z.b. mp3 player ansprechen ?
     
  13. royalcs, 15.02.2010 #13
    royalcs

    royalcs Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    13.12.2009
    Also auf dem droid funktionieren von haus aus wohl nur usb keyboards. Für alles andere muss man den kernel ändern.
    Als kabel kommen die meisten usb host kabel nich in frage da diese einen usb micro AB stecker(viereckig) haben. Unser MS/Droid hat jedoch usb micro A (trapezförmig).
    Der Unterschied zu einem normalen usb kabel ist das der id pin zu masse kurzgeschlossen ist.
    Nun ist die frage ob usb keyboards auch auf dem MS funktionieren
     
  14. bemymonkey, 15.02.2010 #14
    bemymonkey

    bemymonkey Android-Guru

    Beiträge:
    3,926
    Erhaltene Danke:
    351
    Registriert seit:
    06.12.2009
    Phone:
    Galaxy Nexus
    Ich glaube das N810 hat auch den trapezförmigen Stecker... daher sollte das Kabel passen. Vlt. bestell' ich mir das die Tage mal... dann dazu noch eine passende kleine Tastatur (wobei es dann natürlich schade ist, dass ich meine kleine Bluetoothtastatur nicht mehr benutzen kann) und ich bin glücklich (falls es funktionieren sollte).

    Theoretisch muesste man dann nur mit eingestecktem USB-Host-Kabel booten, und könnte dann die Tastatur im laufenden Betrieb an- und abstöpseln, oder nicht? Wie sieht das dann mit der Texteingabe aus? Muss man da ein neues "Input Method" auswählen, wenn man in ein Feld reintippen will?
     
  15. royalcs, 16.02.2010 #15
    royalcs

    royalcs Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    13.12.2009
    Ich denke nicht dass das n810 einen trapetzförmigen usb host adapter benutzt. In das n810 passen aufgrund der viereckigen buchsenform beide varianten, doch die host adapter sind nunmal viereckig so weit ich weiß.
     
  16. phlo, 16.02.2010 #16
    phlo

    phlo Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    3
    Registriert seit:
    07.08.2009
    Leutz, über das kabel zu diskutieren bringt uns hier nicht weiter.
    Das Problem liegt nicht am Kabel, sondern eher das es vom Milestone richtig erkannt und ein service zu verfügung gestellt wird (z.b. als Massenspeicher, Keyboard oder sonstiges)

    Bei Amazon in der Bucht und sonstiges shops gibts tonnen adapter zeugs was Micro-B auf USB-A um mapped (sogar USB-A auf USB-A).

    Also lieber weiter mit der diskussion ob der Kernel das schon könnte oder nicht.

    Gruß

    phlo
     
  17. assenda, 06.03.2011 #17
    assenda

    assenda Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    0
    Registriert seit:
    02.12.2010
    Wie jetzt?! Tastaturen werden doch beim Milestone unterstützt?!
    wo ist das problem?!
    USB Host mode on Motorola Droid

    Und hier im tread wurde das doch auch schon erwähnt^^
    (so wie ichs verstanden hab, muss die tastatur schon beim booten anschließen
    Wie es mit anderen usb-Geräten aussieht, weiß ich auch nicht...


    Also so wie ich das sehe, ist folgender Adapter genau das, was in der anleitung zusammengebaut wird...sehe ich das richtig?!

    lIl Adapter USB 2.0 usb A Buchse/ usb B Micro Stecker bei eBay.de: Kabel Adapter (endet 10.03.11 16:47:56 MEZ)

    wenn jemand das schon getestet hat, bitte melden...

    Übrigens..: Diese Möglichkeit gilt vermutlich nicht für das desire oder?!
     

Diese Seite empfehlen