Android usb tethering

freebsd-questions at herveybayaustralia.com.au freebsd-questions at herveybayaustralia.com.au
Fri Nov 5 14:12:47 UTC 2010



On Thu  4/11/10 10:28 PM , four.harrisons at googlemail.com wrote:
 On Tue  2/11/10 11:37 AM , 
 wrote:
  On Tue  2/11/10 10:11 AM , Alejandro Imass  wrote:On Mon, Nov 1,
2010
  at 6:25 PM, Ivan Voras  wrote:
   > On 11/01/10 15:42, Mark Atkinson wrote:
   >>
   >> -----BEGIN PGP SIGNED MESSAGE-----
   >> Hash: SHA1
   [...]
   > In the above messages, the kernel detaches the storage device
  (umass) and
   > tries to attach the new device, which doesn't have a driver so
 it's
  attached
   > as "ugen" - generic USB.
   >
   Yes. One has to remember that USB is just the bus just like pci,
   microchannel, etc. Even though you have access to the device on the
   bus you still need a driver for that specific ethernet chip your
   kernel. This is analogous to having a video card on the pci bus,
you
   still need for the kernel to drive the specific chipset of the card
   regardless if it can see it on the bus.
   I have an HTC Nexus One so I may fiddle with this and see if I can
   help some more here. I am wishful that at least we can get a tty
 just
   like other gsm modems and from there it's pretty straight forward
   using wvdial or alike. If it's only the Ethernet over usb like you
   mention, then the chipset driver would have to be translated/ported
  to
   the FBSD kernel, if it's not already there ?
  Ok. But I will clarify here:
  The HTC Android systems uses an "Internet Sharing" feature-
  essentially Google has coded in routing/nat system into the base OS
  (probably moding the leftover code already in the linux base), and
is
  trying to allow similar using bluetooth and wifi at a later date as
  well. The RNDIS is a M$ system that allows sharing anything over USB
  (network, files, etc- but all essentially operated as network
 anyway),
  something they've been playing with for some years- I was looking
for
  an A-A USB cable since around 2003 or so to quickly transfer files
  when needed. Apparently M$ opened the specs a year or two ago and
  everyone's jumped on to use it. So where Google started was to start
  allowing the use of the router/nat via RNDIS USB - somehow this was
  easier than allowing bluetooth or wifi (probably security and
  available hardware features).
  So yes, apparently the phone hooks up as a usb mass storage device,
  uploads a file to the computer, and disconnects and becomes a
network
  device. Here is the output from linux:
  usb 2-2.2: new high speed USB device using ehci_hcd and address 4
  usb 2-2.2: configuration #1 chosen from 1 choice
  scsi9 : SCSI emulation for USB Mass Storage devices
  usb-storage: device found at 4
  usb-storage: waiting for device to settle before scanning
  usb 2-2.2: New USB device found, idVendor=0bb4, idProduct=0ff9
  usb 2-2.2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  usb 2-2.2: Product: Android Phone
  usb 2-2.2: Manufacturer: HTC
  usb 2-2.2: SerialNumber: SH07TNX00726
  usb-storage: device scan complete
  scsi 9:0:0:0: Direct-Access     HTC      Android Phone    0100 PQ: 0
  ANSI: 2
  sd 9:0:0:0: [sdf] Attached SCSI removable disk
  sd 9:0:0:0: Attached scsi generic sg6 type 0
  usb 2-2.2: USB disconnect, address 4
  usb 2-2.2: new high speed USB device using ehci_hcd and address 5
  usb 2-2.2: configuration #1 chosen from 1 choice
  usb 2-2.2: New USB device found, idVendor=0bb4, idProduct=0ffe
  usb 2-2.2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  usb 2-2.2: Product: Android Phone
  usb 2-2.2: Manufacturer: HTC
  usb 2-2.2: SerialNumber: SH07TNX00726
  usbcore: registered new interface driver cdc_ether
  usb0: register 'rndis_host' at usb-0000:00:04.1-2.2, RNDIS device,
  ae:f6:3d:da:20:39
  usbcore: registered new interface driver rndis_host
  usbcore: registered new interface driver rndis_wlan
  usb0: no IPv6 routers present
  usb 2-2.2: USB disconnect, address 5
  usb0: unregister 'rndis_host' usb-0000:00:04.1-2.2, RNDIS device
  So. What would be my next step to make this work? OpenMoko have
  something similar and I tried moding some of their scripts (they've
  made theirs work with ALL OS- not just linux and Winblow$! Take heed
  manufacturers!) but it didn't mesh on the Android. I still end up
 with
  a generic host.
  As I mentioned, I tried modifying the cdce driver and the device
list
  but that didn't help either, so when I moded the scripts and
 devd.conf
  I figured that was the missing piece of my puzzle.
  I'd actually pay someone to do this, but I do need to figure this
out
  for myself anyway so I'm diving in deep and going to keep on
  struggling till I get it. I need it figured out before the year's
end
  so I'm not going to sit on my laurels :) That, and a usb mass
storage
  device emulator to trick a dumb digital photo frame....
   >
   > 
 So I have more on this: sourceforge.jp has a project rndis for
 freebsd.
 Its a little hard to navigate, but I downloaded the source code and
 tried to build it on 8.0. No go, but I'm not sure what usb library
its
 using. I think it said usb2, but I'm not exactly sure what that meant
 (usb2.0, or libusb2, whatever).
 Now, I've only just quickly grabbed it and tried to make- I haven't
 had a chance to look too deeply into it as yet- but these are the
 errors if someone could throw me a clue as to what it might be
 indicating? (wrong library? generic error I have to debug?)
 if_rndis.c: In function 'rndis_recv_message':
 if_rndis.c:985: warning: format '%d' expects type 'int', but argument
 3 has type 'long unsigned int'
 if_rndis.c: In function 'rndis_bulk_read_callback':
 if_rndis.c:1167: warning: format '%d' expects type 'int', but
argument
 4 has type 'long unsigned int'
 if_rndis.c:1187: warning: format '%d' expects type 'int', but
argument
 4 has type 'long unsigned int'
 if_rndis.c:1204: warning: format '%d' expects type 'int', but
argument
 4 has type 'long unsigned int'
 *** Error code 1
 I did get from the site that it was for Windows Mobile, but I believe
 that this is a generic system coming out now. It might help?
 Cheers
 -------------------------
 Message sent via Atmail Open - http://atmail.org/ [2]"
target="_blank">http://atmail.org/
 _______________________________________________
  mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-questions [4]"
target="_blank">http://lists.freebsd.org/mailman/listinfo/freebsd-questions
 To unsubscribe, send any mail to ""
 _______________________________________________
  mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-questions [7]"
target="_blank">http://lists.freebsd.org/mailman/listinfo/freebsd-questions
 To unsubscribe, send any mail to ""
	No, I'm afraid its not ethernet over usb as in an ethernet adaptor
like axe. RNDIS is a protocol- and apparently there could be many more
devices that use it as a universal medium since M$ opened the specs to
public use. The linux output above says its something similar to cdce,
but I don't think its the same- it also mentions rndis (rndis over
cdce? or the reverse? Or just a slightly different form of cdce?). M$
were apparently talking about using it as a common medium for device
comms so it could get hairy without it (much as I hate admitting
that).
	I fiddled with cdce before, but didn't have any success- but that I
think was more due to the fact I didn't know how to generate the devs
file. I ended up putting the device manually into the driver but I
don't think I was successful. (Incidentally I now know how to generate
the damn file; stumbled on it by complete accident- so much for
google! Couldn't find it by actually searching could I? I'll doc that
here too: to generate usbdevs.h, run awk on the usbdevs2h.awk script
in the dir- tools I think. There, that'll do I believe :) Google cache
that!)
	This rndis module for Winblows Mobile should be close, but will
probably need tweaking. Maybe merge with cdce as it appears to be in
linux?
	That said if you have a Nexus maybe we can crack at it and share
notes? I've gotten this far in ~2-3 mths, I'm sure it'll be quicker
with someone with more coding experience and/or another phone.
Interested?
	Incidentally, won't it be easier if it isn't just another modem, but
just a network device? If the phone provides the IP all that needs to
happen is to change the default route- right?
	The idea is, if I can crack it, is to use it for business purposes as
the phone provides some functionality which can than be boosted by
laptop for x11 connections, whatever over the vpn (the possibilties
are endless- a complete mobile office and more). I was hoping to get a
look into that code today; but today will be tomorrow in a matter of
minutes (actually it is now), so I guess that was a pipe dream .
Hopefully tomorrow... I mean today... its way too late for this!
	Cheers

-------------------------
Message sent via Atmail Open - http://atmail.org/

Links:
------
[2] http://webmail.unitedinsong.com.au/parse.php?redirect=<a href=
[4] http://webmail.unitedinsong.com.au/parse.php?redirect=<a href=
[7] http://webmail.unitedinsong.com.au/parse.php?redirect=<a href=


More information about the freebsd-questions mailing list