I have successfully used reverse USB tethering on a flipout. This method should be portable to other devices running the motorola android multi-device driver with usb0.
If you are comparing to any windows drivers, say that installed from the driver installer MSI when connecting a flipout and maybe other devices in 'portal' mode, the (windows) driver will be motousbnet. On linux, the driver is cdc_subset. However, this driver does not know how to bind to the motorola
1. Figure out the usb vendor id, product id, and interface class, interface subclass, and interface protocol of the networking interface. On the flipout, this is named the 'motorola networking interface'. On my device, it has these ids: 0x22b8, 0x41da, 0x02, 0x0a, 0x01. You can find these ids via exploring /sys/bus/usb on a linux system, or with the lsusb utility.
2. patch your cdc_subset driver to support the USB id and interface of the above device. You will need to inspect via lsusb or sysfs to setup a 'product' and 'driver info' structure in cdc_subset.c to select the correct interface and endpoints. The pertinent parts of my cdc_subset.c are as follows:
Code:
add to products
{
// Moto flipout usb
USB_DEVICE_AND_INTERFACE_INFO (0x22b8, 0x41da, 0x02, 0x0a, 0x01),
.driver_info = (unsigned long) &motousb_info,
},
add near other driver_infos:
static const struct driver_info motousb_info = {
.description = "Motorola USB endpoint",
.check_connect = always_connected,
.in=0x84, .out=0x03,
};
3. Doing such a mod and compiling yourself a new cdc_subset.ko, and installing that, will yield a usb driver that can talk to usb0 on your flipout. At this point, you just have to configure networking. I setup proxyarp on my LAN and usb0 interfaces, and set up some manual addresses and routes. Other options could be to add usb0 to a bridge, or do routing and DHCP, or routing + nat + DHCP. You'll probably need to netcfg rmnet0 down and setprop net.dns1 and net.rmnet0.dns1 your ips manually. Make sure you save your old dns. I'm not sure if that gets restored from carrier when you turn rmnet back on.
4. after all that, you should be online.
5. EDIT: all compiling and module installation steps noted above happen on the host PC, if that wasn't clear.
Work to follow:
use SL4A to automate usb0 bringup
interface with APNDroid to soft-down the 3g instead of nuking it the hard way. killing the radio process will get you back online, but thats effectively the same as resetting the baseband, so you'll need to re-unlock your SIM etc.
Thanks man! This is awesome. It worked on my Motorola Defy (same parameters) under Ubunutu.
Hi,
I thing this is what i am looking for, enable a motorola device (defy) to be a usb0 device with ubuntu so you can have an IP, and ssh easly with your droid (using vlc remote with usb cable). I realy appreciate this native feature with my old htc.
where is the cdc_subset.c ?
tkx
balek said:
Hi,
I thing this is what i am looking for, enable a motorola device (defy) to be a usb0 device with ubuntu so you can have an IP, and ssh easly with your droid (using vlc remote with usb cable). I realy appreciate this native feature with my old htc.
where is the cdc_subset.c ?
tkx
Click to expand...
Click to collapse
It's in the kernel source. -- You'll have to download the linux or kernel source package that matches the kernel you run on your ubuntu machine, modify your cdc_subset driver, rebuild it, and install it.
Learning things like the kernel build system and how to install a kernel module are exercises for the reader.
Good job! I'll try it once i get my Ubuntu installation up and running again ^_^
Defy and Debian USB network works partially...
Hello. The idea was good...
My config is:
- on one side: a Defy (CM7 1.0-RC1 Nightly build 2037, Gingerbread 2.3.4)
- on the other side: a Linux Debian (Squeeze , kernel 3.0.0-1-686-pae)
I patched the cdc_subset driver as proposed. I saw a little difference on the endpoints: lsusb -v reports 0x83 for 'in' endpoint and 0x2 (bulk) or 0x3 (interrupt) for 'out' endpoint. I tried all combinations and only 0x83/0x2 give a working ping between hosts. => Are the initial endpoints working (0x84/0x3) ?
See attached file for the complete listing, search 'SDX' to see where I patched.
When I plug the USB cable, the usb0 interface is brought up on linux automatically and that's perfect.
With a simple network configuration, ping works on both hosts.
.
So everything seems right.
I then tried to transfer a huge 100MB file to see the performance:
- scp from linux to defy => OK, ~5MB/s
- scp from defy to linux => FAILURE after a few MB transfered
In the second test, the connection is completely frozen and I see errors on both interfaces (ifconfig usb0, error packets). I repeated the test multiple times with alternate network configs, without wifi etc., and I could never transfer the file completely.
Can someone confirm me:
- that the transfer is working for him in both ways with huge files
- what is reported by "lsusb -v -d 22b8:41da" to see if my endpoints for a Defy are correct
I'm not sure, but maybe cdc_subset is not the right driver to patch ?
Or simply it's a bug in scp or sshd on Defy ! I should try with something else like ftp or http...
I keep working on this topic...Thx for any clue !
sdxmob said:
Hello. The idea was good...
My config is:
- on one side: a Defy (CM7 1.0-RC1 Nightly build 2037, Gingerbread 2.3.4)
- on the other side: a Linux Debian (Squeeze , kernel 3.0.0-1-686-pae)
I patched the cdc_subset driver as proposed. I saw a little difference on the endpoints: lsusb -v reports 0x83 for 'in' endpoint and 0x2 (bulk) or 0x3 (interrupt) for 'out' endpoint. I tried all combinations and only 0x83/0x2 give a working ping between hosts. => Are the initial endpoints working (0x84/0x3) ?
See attached file for the complete listing, search 'SDX' to see where I patched.
When I plug the USB cable, the usb0 interface is brought up on linux automatically and that's perfect.
With a simple network configuration, ping works on both hosts.
.
So everything seems right.
I then tried to transfer a huge 100MB file to see the performance:
- scp from linux to defy => OK, ~5MB/s
- scp from defy to linux => FAILURE after a few MB transfered
In the second test, the connection is completely frozen and I see errors on both interfaces (ifconfig usb0, error packets). I repeated the test multiple times with alternate network configs, without wifi etc., and I could never transfer the file completely.
Can someone confirm me:
- that the transfer is working for him in both ways with huge files
- what is reported by "lsusb -v -d 22b8:41da" to see if my endpoints for a Defy are correct
I'm not sure, but maybe cdc_subset is not the right driver to patch ?
Or simply it's a bug in scp or sshd on Defy ! I should try with something else like ftp or http...
I keep working on this topic...Thx for any clue !
Click to expand...
Click to collapse
Any news with defy ?
I am trying to use my HTC Hero as an embedded linux device (more or less) to read the serial port of a UPS in one of the server rooms I have to manage. I know that it requires USB Host Mode to be enabled but don't know where to start to get this working. This could be a really cool project for me and I can devote some time to it because it is work related. I just need someone to point me in the right direction. Any help will be greatly appreciated.
Thanks
Matt
what version of linux are you running.
Code:
# uname -a
Linux localhost 2.6.29.6-CyanogenMod #1 PREEMPT Wed Mar 9 16:21:31 EST 2011 armv6l GNU/Linux
I am running CyanogenMod 7.0.3 Stable currently
Hey guys,
I have just got my tablet (Nexus 10) on the custom build made by AOKP
Now while trying PPP Widget I get the "no driver found" issue
Added the drivers but it seems it's not working
Tried to check if drivers are working and I got that it's not
this is what dsmeg returns
Code:
<3>[ 7401.150909] init: untracked pid 23542 exited
<3>[ 7403.511427] usb_wwan: version magic '3.4.5-gaf9c307 SMP preempt mod_unload ARMv7 p2v8 ' should be '3.4.5-ga46ced8 SMP preempt mod_unload ARMv7 p2v8 '
<3>[ 7411.706173] wm8994-codec wm8994-codec: FIFO error
<3>[ 7411.730924] init: untracked pid 23128 exited
<3>[ 7411.733865] init: untracked pid 23536 exited
<6>[ 7411.842396] iio-buffer, current state requested again
<6>[ 7450.448408] battery: l=46 v=3786 c=-957 temp=31.6 h=1 st=2 ct=0 type=none
I guess my issue is with the custom ROM
Any change I get a driver for this one?
Or is it already posted somewhere?
Tried searching but could not find it.
Cheers,
Gwolf2u
What I have found testing various ROMs with PPP widget and two different HUAWEI sticks ( the older E173 and the newer E398 4g stick):
AOSP/AOKP ROMS will not work, so anything compiled from AOSP source or CM or whatever will not work except the modules have been specifically included in the build which is not the case with any of the popular custom ROMs (PA, Sentinel, Rasbean/saber/sabermod, rootbox, AOKPbutter) as far as I know.
PPPwidget will only work with stock based ROMs, for example CleanROM which is working flawlessly. Moreover there was no powered USB hub needed like someone suggested. However you may have to install the modules from the PPPwidget forum, which is easy. Just follow the guide on the official forum following this link, you also get the files there: http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=6&t=1113
I actually have it working atm on Mr. Robinson's AOKP!
But it's true what mrruin says about the kernels so to get it working I used WugFresh Toolkit to install the stock kernel. There is an option to do this under Advanced menu. The installation process was a little flaky though but it worked in the end which means I can use my 3g usb stick while still retaining the flexibility of aokp rom - it's awesome
Is there any Custom Kernel or ROM where the required modules are included?
Hi everyone!
I don't know what else to do. Every time I had a problem, I always find the answer here. Regrettably, this time I couldn't find a solution for this.
My background:
I'm trying to make AWUS036NH (RT3070) to work with Nexus 7 grouper. More precisely, with a chroot of Kali (made with Linux Deploy). Currently I have CM11.0 Nightly, and recently I flashed the the kernel kangarooV2 from this post, which have the driver (rt2800) I need to make the external Wi-Fi adapter work.
Everything works fine, but when I connect the adapter, nothing happens.
So I searched and tried a lot of things, and finally got the adapter recognized as wlan1 (in Terminal Emulator) doing this:
Code:
$ su
$ insmod mac80211.ko
$ insmod rt2x00lib.ko
$ insmod rt2800lib.ko
$ insmod rt2x00usb.ko
$ insmod rt2800lib.ko
Have to load all those modules because of dependencies, it wouldn't load just the ones I needed.
Ok, with that, now in netcfg I see wlan1, which is the usb wifi adapter.
The thing is, now I can't get the interface up, i tried "ifconfig wlan1 up" but all I get is:
error: SIOCSIFFLAGS (No such file or directory)
How can I get the interface to work?
Thanks in advance.
You have a lovely community here. Cheers!
This may or may not help you: http://ac100.wikispaces.com/Android+rt3070+or+rt2x00
Erovia said:
This may or may not help you:
Click to expand...
Click to collapse
Thanks, I'll have a look at it right now.
I've Rooted my Device Successfully and the bootloader is unlocked.
and and trying to install NetHunter All Day I managed to install it but im facing some issues tools are not working terminal is not working as well. when running proc/version:
Linux version 3.1.10-gf5d7b8b ([email protected]) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Thu Jan 8 04:50:16 UTC 2015
when typing bootkali i get this :
mount: mounting /sdcard/kali-chroot.img on /data/local/nhssystem/kali-armhf failed: No such file or directory
FATAL : kernel is too old
I can't access the kali terminal neither the VNC
I've read somewhere that i have to install a more updated kernel to fix that, but how can i come about doing that without bricking the tablet. I used Nexus Root Toolkit to root and flash the tablet it's an amazing tool but i had an issue with busy box not installing to system/xbin because of no enough space i had to install it in /data for a fix that someone suggested. i bought busybox pro but didn't know how to switch to it and also didn't want to uninstall the binaries in busy box free to avoid any damage.