Related
After experimenting for a while, I've managed to successfully use USB 3G dongle, and to connect my Archos 101IT, running uruk-droid 0.4.1, to the Internet over 3G data network. Test was made with two different 3G USB dongles - Huawei E1552 and ZTE MF190.
First of all a big thanks to $aur0n for uruk-droid, because without uruk-droid kernel with adequate configuration, this 3G support would not be possible.
Second, a big thanks to all guys behind usb_modeswitch project (http://www.draisberghof.de/usb_modeswitch/), for providing us with Linux support needed to switch our 3G USB dongles from default cd-rom/mass-storage mode to usb-serial mode needed for 3G operation.
Process of initial setup of 3G USB dongle to a 3G provider under Linux (and Android/Archos) is fairly complex, and requires a little Linux knowledge, but once it is configured right, usage is simple.
Unfortunately I don't see a way to make it simpler, because lot of parameters in various files are greatly dependant on model of 3G USB dongle you are using, and on settings of your 3G data provider.
DISCLAMER:
This is a proof-of-concept modification. Don't expect that everything will work from a first try.
Please note that I don't take responsibility for anything that might happen with your Archos device and/or your data on it.
I didn't had any problems with my A101IT using this mod with Huawei E1552 3G dongle and ZTE MF190 3G dongle, but that doesn't mean that someone else won't have them.
Also, if you make your 3G USB dongle work as modem using steps described here, I don't take any responsibility for possible large bills form you 3G data service provider.
Be sure that you have good and cheap 3G data plan with your 3G data service provider, if you are planning to use 3G data network for Internet connection on a daily basis.
Also, try to avoid using 3G data service while in roaming, because it is very expensive.
Technical explanation:
Basically USB tethering system on Archos is designed to work over PPP connection, provided by /system/bin/pppd via "Serial-over-USB link", provided by cdc-acm.ko kernel module, when supported cdc-acm class device is connected to USB host port of Archos.
Here is a brief description of USB tethering on Archos 101, modified to work with 3G USB dongles, since you probably going to need to edit some of this files in order to adjust them for your 3G USB dongle and your 3G provider:
1. Kernel support for 3G USB dongles.
This is provided by uruk-droid kernel.
One part you'll use from this support is usbserial.ko kernel module that will be loaded by /system/xbin/3Gmodem_init.sh with adequate parameters, when you start tethering.
2. usb_modeswitch program and support files
usb_modeswitch is responsible for switching of 3G USB dongles from default cd-rom/mass-storage mode to usb-serial mode ready for 3G operation.
You'll use it via /system/xbin/3Gmodem_init.sh, when you start tethering.
3. Archos USB tethering support which is partially in Android framework, and partially in Linux scripts called by framework.
This part of tethering support is most complex one, and in order for Android framework to be aware of data connection, we must disguise 3G data connection as a USB tethering:
Android framework calls modified /system/bin/tether_start_usb.sh, which calls /usr/bin/pppd binary, responsible for data connection to your 3G data provider.
Android framework calls modified /system/bin/tether_stop.sh, for stopping data connection to your 3G data provider.
pppd uses couple of configuration files (and additional binary /usr/xbin/chat):
from '/system/etc/ppp/peers' directory, pppd uses configuration file 'tether' (with definition of pppd options for peer it connects to - this may need editing for your 3G provider)
from '/data/' directory, pppd (via /system/xbin/chat) uses 'tether_start' file as definition of <SEND> <EXPECT> pairs of commands sent to configure modem and responses received from modem, when it connects to a peer (this may need editing for your 3G provider).
from '/system/etc/chatscripts/' directory, pppd (via /system/xbin/chat) uses 'tether_stop' file as definition of <SEND> <EXPECT> pairs with commands sent to modem and responses received from modem, when it disconnects from a peer.
This modification relies on modified '/system/bin/tether_start_usb.sh' and '/system/bin/tether_stop.sh', to be able to correctly initialize RNDIS connection or 3G modem, load adequate kernel modules and start connection, while trying to keep compatibility with original "Archos designed" way of USB tethering.
Configured adequatly ('enable' parameter to 'off' in '/etc/uruk.conf/3Gsupport' file), this modified '/system/bin/terher_start_usb.sh' WILL behave as original one. - not needed anymore - scripts auto-detect connection type and behave adequatly.
For a list of changes in recent versions please se post #2 of this thread.
Tutorial how to use RNDIS USB Tethering:
No configuration needed - if your phone is indeed of USB-RNDIS type - everything will be auto-detected.
Just plug your Archos to a RNDIS capable phone in tethering mode via USB cable, wait for at least 5 seconds (or more - depending on phone), and start tethering on Archos.
Expample of RNDIS tethering device is HTC Desire phone with built-in USB Tethering support enabled. Android based phones from "same generation as HTC Desire" are quite probably of same USB-RDNIS type.
NOTE: due to a technical reasons (bad driver), RNDIS tethering support works only if usb host mode driver (musb_hdrc.ko) is loaded in PIO (as opposed to default DMA) mode. When tethering is started, USB host mode driver is reloaded in PIO mode, so this might be indicated on the phone like USB disconnection and re-connection. This is "normal" behaviour, and for now there is nothing I can do about it. When tethering is stopped USB host mode driver is re-loaded again to DMA mode.
Tutorial how to initially configure 3G USB dongle for USB tethering:
NOTE: Everything written here, should be done in Terminal Emulator or ConnectBot (connected as local) under root shell (after 'su' command)!
Install Terminal Emulator, or ConnectBot from Market.
This step is no longer needed if you are running Uruk-Droid 0.7 or later since 3G modem/RNDIS support is integrated in it
Get 3Gsupport-0.4.zip from attachment in this post. Extract 3Gsupport-0.4.tar.gz file from .zip file and copy it to your Archos to /sdcard. Archive contains everything needed (usb_modeswitch binary and support files, replacement tether_start_usb.sh, replacement tether_stop.sh, 3Gmodem_init.sh script, 3Gmodem_detect.sh).
NOTE: Since /system/bin/tether_start_usb.sh and /system/bin/tether_stop.sh from 3Gsupport-0.4.tar.gz will replace original ones, please backup originals.
The 3Gsupport-0.4.tar.gz file contains absolute paths for all files, and should be extracted to a root ('/' path in RootExplorer).
To backup original tether_start_usb.sh and tether_stop.sh:
Code:
# su
# cp /system/bin/tether_start_usb.sh /system/bin/tether_start_usb.sh.ORIGINAL
# cp /system/bin/tether_stop.sh /system/bin/tether_stop.sh.ORIGINAL
Assuming you have 3GSupport-0.4.tar.gz in /sdcard you should do following in Terminal Emulator or ConnectBot to extract 3Gsupport-0.4.tar.gz:
Code:
# su
# cp /sdcard/3Gsupport-0.4.tar.gz /
# cd /
# tar -zvxf 3Gsupport-0.4.tar.gz
Start the Terminal Emulator, or ConnectBot (to localhost).
Issue 'su' command in terminal window to gain root access.
Plug dongle in usb host port (full size USB on A101IT).
NOTE: For A70IT you'll need something called "mini USB Type-A to USB female host cable adapter", and maybe manually loading of host-mode USB driver (musb_hdrc.ko) – I don’t have A70IT so I can’t test.
Wait couple of seconds (at least 5) and then start 3G modem detection script with '/system/xbin/3Gmodem_detect.sh' command.
The output of the detect scripts should be pretty self-explanatory, and if your modem is supported by usb_modeswitch (in both switching and non-switching mode) you should be able to see that usb serial module is loaded and configuration file is written and support for 3G modems is started.
Output should look like this:
Code:
# /system/xbin/3Gmodem_detect.sh
Supported USB device found !!!! VendorID: 12d1 - ProductID: 1446
New VendorID: 12d1
New ProductID not detected in usb-modeswitch config file. Try to detect it later !
Switching device to usbserial mode !
Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
Found devices in default mode, class or configuration (1)
Accessing device 004 on bus 002 ...
Getting the current device configuration ...
OK, got current device configuration (1)
Using endpoints 0x01 (out) and 0x81 (in)
Using endpoints 0x01 (out) and 0x81 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
OK, driver found ("usb-storage")
OK, driver "usb-storage" detached
SCSI inquiry data (for identification)
-------------------------
Vendor String: HUAWEI
Model String: Mass Storage
Revision String: 2.31
-------------------------
USB description data (for identification)
-------------------------
Manufacturer: HUAWEI Technology
Product: HUAWEI Mobile
Serial No.: not provided
-------------------------
Setting up communication with interface 0 ...
Using endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
OK, message successfully sent
Resetting response endpoint 0x81
Error resetting endpoint: -110
Resetting message endpoint 0x01
Error resetting endpoint: -19
Device is gone, skipping any further commands
Checking for mode switch (max. 20 times, once per second) ...
Searching for target devices ...
Searching for target devices ...
Found target device, now opening
Found correct target device
Mode switch succeeded. Bye.
Detected ProductID of a switched device: 140c
USB device VendorID: 12d1 ProdID: 140c. Probing serial mode
usbserial.ko module registered and /dev/ttyUSB{X} device nodes created sucessfully.
Writing default configuration to '/data/local.prop' file .....Done.
!!! REBOOT your A101IT now in order for your configuration to become active !!!
After reboot:
Disconnect your 3G USB dongle, do not connect anything to USB host port and go to Settings->Wireless & Networks->Cellphone tethering.
If there is tethering profile already defined, delete it - Archos handles only one tethering profile definition at a time.
Create new USB tethering profile.
Your APN, username and password won't be detected automatically, so fill them manually - find adequate info from your 3G service provider (for me on Telekom Srbija: APN is ‘gprsinternet’, username is ‘mts’, and password is ‘064’ (some 3G operators don't need username and password)).
This will create file '/data/tether_start' with adequate commands for ppp daemon to initialize 3G modem and make a connection to your 3G provider.
NOTE for uruk-0.6: It '/data/tether_start' file is not created after wizard finishes try following in terminal emulator:
Code:
su
chown 1000:1000 /data
chmod ug+rwx /data
then delete the tethering profile just created and re-create it again !!! Now everything should be OK.
File should look like this:
Code:
TIMEOUT 5
ECHO ON
ABORT BUSY
ABORT ERROR
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
TIMEOUT 12
'' ATZ
OK AT+CGDCONT=1,"IP","[COLOR="DarkRed"]<your APN configured in tethering wizard>[/COLOR]"
OK ATD*99#
TIMEOUT 120
CONNECT ''
If steps 3 and 4 were OK, then you should be able to test pppd connection to the Internet.
NOTE: This test assumes following:
a) that SIM/USIM card in your 3G modem doesn't require PIN code.
b) that your 3G modem automatically register SIM/USIM to a network in Automatic mode (auto-band, 3G preferred mode (EDGE service if no 3G available))
If this is not a case please take a look in section "Modifying tether_start script" later, for reference how to modify '/data/tether_start' script with adequate AT commands that should be sent to modem.
Re-plug your 3G USB dongle.
Wait at least 5 sec.
Start the Terminal Emulator, or ConnectBot (to localhost).
Issue 'su' command in terminal window to gain root access.
Issue '/system/xbin/3Gmodem_init.sh' command
Issue '/system/bin/pppd /dev/ttyUSB0 460800 debug mtu 1280 mru 1280 name <username> password <password> call tether'
If you get CONNECTED message then your dongle and /dev/ttyUSBx port is set right and everything is configured well.
Output should look like this:
Code:
ATZ
OK
AT+CGDCONT=1,"IP","[COLOR="DarkRed"]<your APN configured in tethering wizard>[/COLOR]"
OK
ATD*99#
CONNECT
You can interrupt pppd with Ctrl+C.
If you don't see CONNECT (or any) response from modem try with one of other ttyUSB[0-5] ports first, or refer to following section on modifying /data/tether_start script.
Assuming the step 5 was success, edit '3Gmod.usbPort' option to match the number you have used in test in step 5, in '/data/local.prop' file, and REBOOT your Archos.
From now you can use 3G USB tethering just by plugging 3G USB dongle, and starting 'Setup->Wireless & Network->Cellphone Tethering->Tether'.
Modifying '/data/tether_start' script for your particular 3G modem and 3G operator:
File '/data/tether_start' is standard chatscript for unix chat program ('man chat' on Google for more info and syntax reference) used by pppd when making connection.
In default tether_start file most important line is one for setting APN: ' OK AT+CGDCONT=1,"IP","<your APN configured in tethering wizard>" ' in example above.
Second important line is one that connects your modem to your 3G data provider: 'OK ATDT*99#' - for some providers it needs to be modified to 'OK ATDT*99***1#'.
If your SIM/USIM card needs PIN in order for you to be able to use your 3G USB dongle, try to disable PIN on your card before using it in 3G USB dongle.
If you can't disable PIN for your SIM/USIM card (for example, as far as I know Tele2 cards must have PIN), you'll probably need to modify 'tether_start' script and to add adequate AT commands and expected responses, before setting APN.
A solid reference of 3G modem AT commands and manufacturer/model specific AT commands can be found these pages:
http://3g-modem.wetpaint.com/page/common+AT-commands
http://3g-modem.wetpaint.com/page/Huawei+AT-commands
http://3g-modem.wetpaint.com/page/ZTE+AT-commands and
http://3g-modem.wetpaint.com/page/Sierra+Wireless+AT-commands
Example /data/tether_start script that sends PIN 1234 and sets "auto 3G/GPRS mode" (for Huawei 3G USB dongles only !!!) looks something like this:
Code:
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'VOICE'
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT 'DELAYED'
REPORT CONNECT
TIMEOUT 6
'' ATQ0
OK-AT-OK ATZ
TIMEOUT 3
OK AT+CPIN=1234
OK-AT-OK ATI
OK ATZ
OK ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK AT\^SYSCFG=14,2,3fffffff,0,1
OK-AT-OK AT+CGDCONT=1,"IP","<your APN configured in tethering wizard>"
OK ATDT*99***1#
TIMEOUT 30
CONNECT ''
There is a plenty of information on the Internet on how to configure Linux ppp chatscripts for particular models of 3G USB dongles and 3G operators, so please SEARCH, READ & TRY before asking, since you'll have to try it anyway at the end .
ISSUES:
First start of tethering after plugging, re-plugging 3G USB dongle or stopping tethering can (and probably will) end in "unable to connect by tethering" message.
This happens since dongle needs to be switched to usb-serial mode, kernel modules must be loaded, and most important 3G dongle must register to 3G data network to be able to connect, and Android framework timeout before connection is established.
Solution is to just start tethering again, and since there is no need to do a usb_modeswitch again, and kernel modules are already loaded, and dongle is registered to 3G network provider, it will connect before timeout.
When Archos wakes-up after sleep, some dongles (ZTE-MF190 is one of them), wake-up in default mode (non usb-serial mode), so tethering needs to be stopped and started manually.
One possible workaround is to enable "Prevent device from going to sleep" in 'Setup->Wireless & Network->Cellphone Tethering', but with uruk-droid 0.4.1 based on Archos 2.0.x firmware this option didn't work as expected - device still goes to sleep, even if tethering is connected.
With 2.1.x based uruk-droid (0.6 is first) it seems that this option works.
QUESTIONS & ANSWERS:
Q: Can I use my phone and 3G modem whithout reconfiguring tethering every time I switch them ?
A: Please take a look in this post
FUTURE PLANS:
Integration of real USB-cable tethering with Android based devices that require Archos to tether using usbnet.ko module via "Ethernet-over-USB" type of link. - DONE
Change log:
0.4.1 - Integrated in UrukDroid-0.7 with minor script errors corrected, tutorial updated
0.4 - RNDIS (Ethernet-over-USB) tethering merged with 3G modem, and Archos default USB tethering support this version needs UrukDroid-0.6 at least
changed scripts, in order to acheive auto-detection of tethering type (RNDIS, 3G modem or Archos default Serial-Over-USB)
changed location of saved 3G modem configuration data to /data/local.prop, so the configuration data is avalible upon reboot as Android properties (/data/local.prop file is NOT overwritten by 3Gmodem_detect.sh, so don't worry ;-) )
elimninated need for /etc/uruk.d service, because of previous changes
0.3 - lot of changes in scripts, in order to make 3Gdongle detection and module load configuration simplier.
/system/xbin/3Gmodem_detect.sh introduced for purpose above
tutorial changed to follow 3Gmodem_detect.sh usage
compatible with 3G USB dongles that don't need switching (like Huawei E176)
wokring on uruk-0.6RC2
0.2 - changes to '/system/etc/uruk.d/3Gsupport' script to conform to urukdriod 0.5 standard
'/system/etc/uruk.d/3Gsupport' script now supports (beside start and stop): status, UIstatus and config parameters as well as second parameter force
no other functional changes
working on urukdroid 0.5 and 0.4.1
0.1 - Initial release tested on urukdroid 0.4.1 and 0.5
Here is the list of 3G modems and providers confirmed to work and optional notes if '/data/tether_start' needed to be altered:
1. Huawei E1552 on MTS Serbia (APN: gprsinternet, U: mts, P: 064) and VIP Serbia (APN: vipmobile, U: vipmobile, P: vipmobile)
2. Huawei E1550 on MTS Serbia (APN: gprsinternet, U: mts, P: 064) and VIP Serbia (APN: vipmobile, U: vipmobile, P: vipmobile), and on Starhub (Singapore) (APN as shinternet no U: and no P
3. ZTE MF190 on MTS Serbia (APN: gprsinternet, U: mts, P: 064) and VIP Serbia (APN: vipmobile, U: vipmobile, P: vipmobile)
4. Huawei E173 on MTS Serbia (APN: gprsinternet, U: mts, P: 064) and VIP Serbia (APN: vipmobile, U: vipmobile, P: vipmobile)
5. Huawei E176 on unknown 3G provider/params
6. Huawei E1691 on Wind Mobile in Canada 3G provider and unknown params, but with configuration file change described in this post
7. Huawei E153 on unknow 3G provider/params
Here is the list of phones with RNDIS USB tethering, confirmed to work:
1. HTC Desire (stock 2.29.405.2 with built-in USB Tethering support enabled)
2. US HTC HD2 running a Desire-based NANDroid ROM on T-mobile (APN: epc.tmobile.com, no U: , no P: )
awesome, will have to try this out on my tmobile web and walk III stick later.
Thanks for this very well done explanation ! I'll try on my 70
solune said:
Thanks for this very well done explanation ! I'll try on my 70
Click to expand...
Click to collapse
Note that you'll probably need microUSB-Type A to USB host cable adapter in order to use 3G USB modem dongle.
I really don't know does Archos 70IT automaticaly unload's clinet mode usb driver, and loads host-mode driver when you plug in microUSB host adapter cable (it should do it - that is one of reasons why host cable has one pin more), but if it doesn't you'll have to load musb_hdrc.ko module in manually.
I think that it must be loaded with parameter mode_default set to 1 in order to activate host mode ('insmod /lib/modules/musb_hdrc.ko mode_default=1').
great it is a good news
but no simply
how the merge on UrukDroid
nenadr said:
Note that you'll probably need microUSB-Type A to USB host cable adapter in order to use 3G USB modem dongle.
I really don't know does Archos 70IT automaticaly unload's clinet mode usb driver, and loads host-mode driver when you plug in microUSB host adapter cable (it should do it - that is one of reasons why host cable has one pin more), but if it doesn't you'll have to load musb_hdrc.ko module in manually.
I think that it must be loaded with parameter mode_default set to 1 in order to activate host mode ('insmod /lib/modules/musb_hdrc.ko mode_default=1').
Click to expand...
Click to collapse
Yes I already have microUSB-Type A to USB Host cable adapter, and it works for my USB drive for example. I've already connected my 3G USB modem dongle just for see what's appen, and light blink on it, so I have hope to do something with your very well explained guide
I'll make feed-back here if host-mode driver loads or if I need to mount it manually.
cajl said:
great it is a good news
but no simply
Click to expand...
Click to collapse
I know it is not simple but it is try-error only until your connection is succesfull for a first time (while you fine tune params for your 3G modem, and for your 3G operator). After that is just metter of sticking 3G USB dongle, waiting 5 seconds, and clicking Tethering on Power Widget (twice )
cajl said:
how the merge on UrukDroid
Click to expand...
Click to collapse
I'll hopefully upgrade to uruk 0.5 today, and adapt scripts (mainly uruk-config ones), to 0.5 version of uruk-droid during the weekend, and post those scripts here.
After that my plan is to upgrade to a uruk-0.6RCx and play with USB cable tethering with Android phones that tether via "Ethernet-over-USB" support (usbnet.ko module).
Hopefully, I will know soon enough if that is operational, and after that I'll talk to $aur0n about integration.
solune said:
Yes I already have microUSB-Type A to USB Host cable adapter, and it works for my USB drive for example. ......
Click to expand...
Click to collapse
If it works with USB drive, that should be proof enough that Archos 70IT is switching to USB host mode just by plugging microUSB host adapter. Good news, more devices supported....
solune said:
I'll make feed-back here if host-mode driver loads or if I need to mount it manually.
Click to expand...
Click to collapse
Please do, thank you very much.
i'm up to step 6 . it was pretty clear up to then. a) i dont have a 3Gsupport.conf file in there b) i guess the bit in the [code ] box isnt what you need to do to edit it c) presuming you mean just open the 3Gsupport file and edit that, am i just replacing all instances of vendor and product or also the VendorID /ProductID bits too?
thefunkygibbon said:
i'm up to step 6 . it was pretty clear up to then. a) i dont have a 3Gsupport.conf file in there b) i guess the bit in the [code ] box isnt what you need to do to edit it c) presuming you mean just open the 3Gsupport file and edit that, am i just replacing all instances of vendor and product or also the VendorID /ProductID bits too?
Click to expand...
Click to collapse
Yup I've made a mess in that part of tutorial (wrong path/name of config file, not clear enough explanation):
You have to edit file '/system/etc/uruk.conf/3Gsupport' and it should look something like:
service_enabled=1
enable=on
vendor=12d1
product=1446
port=0
I've corrected that part of initial post. Thanks.
Pictures of this "exploit"
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I've good news for Huawei E176 user, The modem doesn't require to switch mode.
So we just only need to edit ther_usb start and stop .sh
and here is the code for E176
/system/bin/tether_start_usb.sh
Code:
#!/bin/sh
# $1 is the user (not a mandatory argument)
# $2 is the password (not a mandatory argument)
setprop "3Gmod.enable" "on"
setprop "3Gmod.defVendorID" "12d1"
setprop "3Gmod.defProductID" "1003"
setprop "3Gmod.usbPort" "0"
rmmod usbserial
sleep 1
insmod /lib/modules/usbserial.ko vendor=0x12d1 product=0x1003
sleep 1
SUPPORT3G=`getprop "3Gmod.enable"`
VENDOR3G=`getprop "3Gmod.defVendorID"`
PRODUCT3G=`getprop "3Gmod.defProductID"`
PORT3G=`getprop "3Gmod.usbPort"`
if [ ${SUPPORT3G} != on ]; then
insmod /lib/modules/musb_hdrc.ko mode_default=1
insmod /lib/modules/cdc-acm.ko
if [ $# -eq 0 ]
then
/system/bin/pppd /dev/ttyACM0 460800 call tether
else
/system/bin/pppd /dev/ttyACM0 460800 name $1 password $2 debug call tether
fi
else
if [ $# -eq 0 ]; then
/system/bin/pppd /dev/ttyUSB${PORT3G} 921600 call tether
else
/system/bin/pppd /dev/ttyUSB${PORT3G} 921600 name $1 password $2 call tether
fi
fi
/system/bin/tether_stop.sh
Code:
#!/bin/sh
SUPPORT3G=`getprop "3Gmod.enable"`
if [ $1 = "DUN" ]
then
/system/xbin/dund --killall
elif [ $1 = "PAN" ]
then
/system/bin/pand --killall
else
if [ ${SUPPORT3G} != on ]; then
kill -9 $(pidof pppd)
/system/bin/rmmod cdc_acm
/system/bin/rmmod musb_hdrc
else
killall -15 pppd
fi
fi
Meen said:
I've good news for Huawei E176 user, The modem doesn't require to switch mode.
So we just only need to edit ther_usb start and stop .sh
and here is the code for E176
Click to expand...
Click to collapse
Thanks for the info on Huawei E176. I'll make some chaneges in original scripts, for those users that have modems that don't require switching, to be able to use original scripts. It'll be in 0.3 in next day or so.
cajl said:
Pictures of this "exploit"
Click to expand...
Click to collapse
could you please post some bigger pictures? I'm not sure its big enough for people to see.
ok nenadr, I'll try the rest of the process tonight cant wait to try it. have you managed to get an idea of the sort of battery drain using one of these? ie is it much worse than using wifi?
I'm getting the following on step 7 . I am using uruk 0.5 I it makes any difference
/system/xbin/3Gmodem_init.sh 12d1 1003
No 3G USB dongle support detected. Will try to initialize modem.
Found USB 3Gmodem dongle in default mode connected to device. Starting modeswitch.
ERROR: Module option does not exist in /proc/modules
ERROR: Module usbserial does not exist in /proc/modules
ERROR: Module usb_storage does not exist in /proc/modules
Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
No devices in default mode found. Nothing to do. Bye.
sh: 1003: unknown operand
Found new Product ID: 0002
1003
0001
0a19 for Vendor ID: .
Loading 3G modem kernel driver with adeqate configuration
insmod: error inserting '/lib/modules/usbserial.ko': -1 Invalid parameters
Kernel module load failed. Exiting.
#
thefunkygibbon said:
I'm getting the following on step 7 . I am using uruk 0.5 I it makes any difference
Click to expand...
Click to collapse
Please, take a look couple of posts up, for an alternate solution, because it seems that your vendorID and productID doesn't need mode-switching. I'll fix the scripts, and tutoral for that case tomorrow.
Sent from my A101IT using Tapatalk
lol. oh yeah. sorry. i didnt know mine was a E176 and as such i skimmed over those posts sorry for appearing to be a bit of a idiot. cant wait for the new script.
btw has $auron shown any interest in incorporating this into his rom. would be useful to have all the legwork done automatically and maybe urukconfig could do some of the stuff that isnt able to be done automatically
thefunkygibbon said:
btw has $auron shown any interest in incorporating this into his rom. would be useful to have all the legwork done automatically and maybe urukconfig could do some of the stuff that isnt able to be done automatically
Click to expand...
Click to collapse
yes, his shown interest but this code is stll not mature (and tested on) enough devices to be merged with uruk.... meybe for some later urukdroid, who knows
Sent from my A101IT using Tapatalk
This is some of the info that I have put together and I figured it may help some of you also. Let me know if I need to add anything. Looking forward to working with this device. Hopefully the Devs will take an interest in it also. With these hardware specs I feel like they will. Anyway, carry on............
Dev/Config/Soft/Tools
CyanogenMod team Touchpad port
HP Site
SDK - Multiple Platforms Instructions
Command line tools
Java - WIndows 32 and 64 Bit Instructions
****Note - Be sure to add the Java Bin path to your Environment Variables PATH
Java - Linux
Bluetooth with Non-WebOS device
Enabling Developer Mode (Rooting)
How To: Connect TP to network sharesHW
Exploded and PCB
Quick sum up/start up guide Thanks KameoRE
Bill of Materials
Specs 16GB
Specs 32 GB
Repair Manual / Teardown
Comparisons
Extra info
Enabling Developer Mode (Rooting)
In general, simply installing the Palm SDK gives you everything you need for full access to the Linux operating system on any webOS device. There is no special "rooting" or "jailbreaking" process. Simply installing the SDK provides you with unlimited access to the Linux operating system.
Download & install the Palm SDK for Linux, OS X or Windows.
Enable developer mode on the HP Touchpad:
Launch Device Info and tap its top-left menu.
Select "Custom Application..." and type in: ##3386633#
In the application, move the Developer Mode slider to the On position.
Tap Reset the Device.
When reset is complete, Developer mode is enabled.
Plug the device into the computer via the USB cable, and just close out the USB storage mode thing.
The next step varies:
Mac OS X / Linux: Type novaterm into terminal to directly access the Linux command line for the HP Touchpad.
Windows: you will need to download and install a novaterm program.
On Windows 32-bit, download novacom-win-32.tgz and install novacom with NovacomInstaller_x86.msi.
On Windows 64-bit, download novacom-win-64.tgz and install novacom with NovacomInstaller_x64.msi.
Then, just like the Mac and Linux users you can just type novaterm.
At this point you will have a window with a prompt that says [email protected]: or something similar.
You are now logged in as root on your webOS device and can do anything you would normally do on a Linux device.
DISCLAIMER: We cannot be held liable for any loss of data, damage, bricking, or other malfunctions of the device. We solely provide the information needed to achieve root access.
This quick sum up/start up guide might come handy:
http://forums.precentral.net/hp-touchpad/293028-new-touchpad-heres-your-get-started-guide.html
[Q] What is wrong with my touchpad?
RESET: Hold Power Button & Home Button until the tablet resets.
Doing the above solved the below issue.
My touchpad won't turn on I used it until it had about 30 % battery last night, but didn't put it to charge. When I woke up this morning, it was at 28% battery. I used it to check facebook and xda, locked it and put it down to watch the price is right but when I went to use it again, none of the buttons unlocked it. I plugged it into mulitple outlets and held the power button for about 30 seconds each time, but nothing is happening I don't know what to do. Can anybody help?
Click to expand...
Click to collapse
solution #2
this happened twice:
plug it in to pc
open webos quick install
tools - command line
type "reboot" and hit enter
Bill of Materials
$318 Bill of Materials
Comparisons
Comparisons
Exploded and PCB
Exploded and PCB
First non-webOS phone to be fully tetherd with HP TouchPad
First non-webOS phone to be fully tetherd with HP TouchPad
Worked for me, I had to fool with it a couple of times to get it to work. My screenshot is attached
The messaging does not work but the phone calls do.
How To: Connect TP to network shares
How To: Connect TP to network shares
spud101
Member
Join Date: Jun 2004
Location: Netherlands
Posts: 574
Likes: 34
Thanks: 43
Thanked 69 Times in 34 Posts
Updated (Sep 7th 2011):
Rewritten to include a method for stock kernel, make shares usable for KalemSoft Media Player & automount at (re)boot. Thx to everybody who contributed to this thread! (Under construction, finished later)
Updated (Aug 9th 2011): processed some comments from this thread and the fact that uberkernel now also supports CIFS (& NFS).
Prerequisites:
- HP Touchpad, webOS 3.0.2 or later.
- One of the following Kernels:
---- Stock kernel
---- Uberkernel 3.0.2-52 or later (Next to support for CIFS & NFS this kernel also supports UTF-8. More info here: WebOS Internals Uber-Kernel
---- F15C,.. (completed later)
- Terminal access to your TP, either via webOS Quick Install or Xecutah + Xserver + Xterm (install from preware)
- Internalz Pro with show hidden files set to yes
Three parts:
This guide has three parts:
Basic Mounting
Mounting with shares visible in apps like Kalemsoft Media Player
"Sticky" mounting: Auto mount at (re)boot
Definitions:
hostIP = IP address of the computer or NAS you want to connect to. You can use hostnames too, but need to also edit /etc/hosts then.
sharename = The share name you want to connect to as configured on your computer/NAS
mountpoint-path = as discussed above, e.g. /mnt/nas
cifs = type of filesystem to mount (cifs is better version of smbfs, I've been told)
auto (or can also be noauto) auto/noauto determines if the share is mounted automatically at startup.
username & password = share login credentials. There are probably safer ways to do this instead of having this plain text on your device, anyone can tell me how to do that?
rw = access mode, in this case read & write, other possibilities exist too
The numbers have someting to do with filesystem check at boot.
1a: Basic Mounting (without fstab)
- Create a mountpoint, a path where the share will be accessible, e.g. /mnt/nas or /mnt/media/internal/nas I used Internalz Pro in master mode for this.
- In a terminal type:
mount.cifs //<hostIP>/<sharename> <mountpoint-path> -o username=<username>,password=<password>
Example: mount.cifs //10.0.1.26/DataVolume /mnt/Shared -o username=foo,password=bar
1b: Basic Mounting (with fstab, not supported by stock kernel)
To be finished later
2: Mounting with shares visible in apps like Kalemsoft Media Player
To be finished later
For now please refer to:
Road to Success - How to allow NAS to show up under /media/internal on Touchpad Apps?
How To: Connect TP to network shares
How To: Connect TP to network shares
3: "Sticky" mounting: Auto mount at (re)boot
To be finished later
For now please refer to:
Road to Success - Mounting SAMBA/CIFS Permanently on Touchpad
-------------------------------
Original post:
In short: The stock kernel on a webOS 3.0.2 Touchpad does not support CIFS. Or at least I didn't get it to work just the same way I do get it to work out of the box on a 1.4.5 Pre-.
Then I saw this thread: F15B & F15C test kernels
It says CIFS support! So I hesitantly installed this experimental F15C kernel, quickly ran Govnah to set max speed to 1.5 GHz (I don't want no real overclocking beyond this speed). But, YES, it does work, I now can access my NAS!
After I initially posted this thread webosinternals also added support for CIFS (& NFS) to the uberkernel (as of version 3.0.2-36). Thanks a lot for that guys!!
So how to go about:
- Install the F15C kernel from the testing kernel feed
The rest is standard linux stuff for mounting Samba shares:
- Create a mountpoint, a path where the share will be accessible, e.g. /mnt/nas or /mnt/media/internal/nas I used Internalz Pro in master mode for this.
- Open /etc/fstab again you can use Internalz Pro in master mode for this
Add a line:
//<hostIP>/<sharename> <mountpoint-path> cifs auto,username=<username>,password=<password>,rw 0 0
hostIP = IP address of the computer or NAS you want to connect to. You can use hostnames too, but need to also edit /etc/hosts then.
sharename = The share name you want to connect to as configured on your computer/NAS
mountpoint-path = as discussed above, e.g. /mnt/nas
cifs = type of filesystem to mount (cifs is better version of smbfs, I've been told)
auto (or can also be noauto) auto/noauto determines if the share is mounted automatically at startup.
username & password = share login credentials. There are probably safer ways to do this instead of having this plain text on your device, anyone can tell me how to do that?
rw = access mode, in this case read & write, other possibilities exist too
The numbers have someting to do with filesystem check at boot.
- Save the file
- Open a terminal
- type in this command:
mount -t cifs //<hostIP>/<sharename> <mountpoint-path> -o username=<username>,password=<password>
No idea whether all the -o options are still needed, as they are in the fstab line already as well.
Apparently mount -a should also mount your shares inside fstab. But for me that didn't work, maybe because I have it set to noauto.
This should do it.
Unmounting as follows:
umount <mountpoint-path> e.g. umount /mnt/nas
Note: as soon as you have a kernel running that supports CIFS, you can also use the xt tools. See this thread and the threads referenced inside it. samba filesharing - install/support thread
The xt tools will take over all the fstab editing and directory creation.
I agree this is still cumbersome. On an Android phone for example this is buildin in every decent filemanager. So I really, really hope that either or both Gemini and Internals HD will have some easy solution for this (both configuring and the actual mounting/unmounting). Or a solution straight from HP, this is also aimed at enterprise market after all!
Last edited by spud101; 09/08/2011 at 07:41 PM.
Thanked by 60milesmile, cookie_42, El_Titi, flyers333, ichi2k, Major Payne, mivoligo, Nightburn, obarthelemy, PF Graham, phil71, pre101, RickNeff, runner77, sf3000, sjp770, sps_2k1, tabaloos, teng_lin, thomaz, timjhenry, tlaswell
Weird shortcut to USB mode
Has anybody else seen this?
While connected to PC in "just charging" mode I reached out and accidentally hit the Volume Down and Power buttons at the same time. The TouchPad instantly switched to USB Storage mode.
Interesting behavior and I couldn't seem to find any mention of it anywhere.
PreCentral had it as a tip on their web site about a week ago and I spotted it there - http://www.precentral.net/access-usb-mode-touchpad.
Quite a few other useful titbits crop up on there - it is worth following. I use the webOS News app from the App Catalog. That gives heads-up on the free software codes as well.
dmarchant said:
PreCentral had it as a tip on their web site about a week ago and I spotted it there - http://www.precentral.net/access-usb-mode-touchpad.
Quite a few other useful titbits crop up on there - it is worth following. I use the webOS News app from the App Catalog. That gives heads-up on the free software codes as well.
Click to expand...
Click to collapse
LOL, I think you mean "TIDBITS."
Too bad there is no reverse version of this.
Good day...
Im wanting to connect a USB camera to my ViewSonic G Tablet... I have 3 different USB models. When I plug them in (individually,) I get the /dev/video0 device but I don't seem to be able to use the device...
Why a second camera? I'm thinking I can use my G Tab in my car with a USB camera connected for a Baby Cam (since the baby faces the other way so I can't see and most of my traveling is at night so the normal mirror won't work unless I blind the poor child...) -- In theory, it could be used as a backup camera as well. (Same effect)
The internal camera works, but I don't need to see myself, I'd rather see something behind me.
Ideas?
I've scoured the Forums in more detail... Several ask the questions and someone made it work on the Nook, but it looked Nook specific. =/
Is there a more appropriate place to ask? This would affect all Android Devices that have a USB Host Port...
Now, the G Tablet, VEGAn mod at least... has the UVC Driver for WebCams. When I plug a camera in I get the /dev/video0 device (which doesn't exist until I plug in a camera.) - could it be permissions or is the driver not fully implemented?
The mplayer app that was released sets the root path to /sdcard so I can't point it at /dev/video0... I've tried to use the stream part, but it just exits the video - no error that I can see...
adamsoutherland said:
Now, the G Tablet, VEGAn mod at least... has the UVC Driver for WebCams. When I plug a camera in I get the /dev/video0 device (which doesn't exist until I plug in a camera.) - could it be permissions or is the driver not fully implemented?
Click to expand...
Click to collapse
The device appearing is a good first sign. Can you get me a dmesg output after you've plugged the webcam in? Run a Terminal Emulator app, then type in the window:
Code:
$ [B]dmesg > /mnt/sdcard/dmesg.txt[/B]
The mplayer app that was released sets the root path to /sdcard so I can't point it at /dev/video0... I've tried to use the stream part, but it just exits the video - no error that I can see...
Click to expand...
Click to collapse
Is this app an Android port of the standard mplayer for Linux? If yes, then it will use the V4L (Video 4 Linux) API to grab video frames, and if you can start it on the command line (or supply an input file name), then you can try "tv://" as the input file name.
Run this command first, though, to give everybody read-write access to /dev/video0:
Code:
$ [B]su[/B]
# [B]chmod 666 /dev/video0[/B]
I'm attaching a dmesg prior to plugging in the camera, and one after... I'm also inserting the text of the "diff" in the post...
Code:
[ 189.574313] usb 1-1.1: new high speed USB device using tegra-ehci and address 3
[ 189.657223] usb 1-1.1: New USB device found, idVendor=18ec, idProduct=3299
[ 189.664506] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 189.671944] usb 1-1.1: Product: USB2.0 PC CAMERA
[ 189.677125] usb 1-1.1: Manufacturer: ARKMICRO
[ 189.685907] usb 1-1.1: configuration #1 chosen from 1 choice
[ 189.695760] uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (18ec:3299)
[ 189.708989] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[ 189.732392] input: USB2.0 PC CAMERA as /devices/platform/tegra-ehci.2/usb1/1-1/1-1.1/1-1.1:1.0/input/input7
[ 190.318832] SO340010: gpio_val=0xc0a50000, button_val = 0xdbaf0002
[ 190.445387] SO340010: gpio_val=0xc0a50000, button_val = 0xdbaf0000
and this:
Code:
/data/data/berserker.android.apps.sshdroid/home # ls -lh /dev/vid*
crw-rw---- 1 0 1006 81, 0 Sep 2 18:22 /dev/video0
I've also done this:
Code:
/data/data/berserker.android.apps.sshdroid/home # chmod 666 /dev/video0
/data/data/berserker.android.apps.sshdroid/home # cat /dev/video0 /mnt/sdcard/test.mpg
cat: read error: No such device
/data/data/berserker.android.apps.sshdroid/home # ls -lh /dev/vid*
crw-rw-rw- 1 0 1006 81, 0 Sep 2 18:22 /dev/video0
/data/data/berserker.android.apps.sshdroid/home #
The mplayer was an APK from someone on the forums... I've opened it up only to find a "mplayer.so" as I thought it might contain the mplayer binary... (I don't have a machine (with sufficient space) to load the Android SDK at the moment...) (It's on my todo list.)
Am I right to try "cat /dev/video0" before I find the proper mplayer or event ffmpeg binary? (It generally works in linux when I do it...)
PS - I have 3 WebCams, I can give you a dmesg of each one if you need it... They all appear to do the same thing (they are by different manufacturers... iMicro, Sabrent and Agama.) -- also note that these 3 web cams work in Linux (each slightly different, but they work.)
adamsoutherland said:
The mplayer was an APK from someone on the forums... I've opened it up only to find a "mplayer.so" as I thought it might contain the mplayer binary... (I don't have a machine (with sufficient space) to load the Android SDK at the moment...) (It's on my todo list.)
Click to expand...
Click to collapse
Attach the APK so I can have a look at it.
Am I right to try "cat /dev/video0" before I find the proper mplayer or event ffmpeg binary? (It generally works in linux when I do it...)
Click to expand...
Click to collapse
I'm surprised that that works even on standard Linux! You have to setup the frame capture parameters first using ioctl()s before you can start reading data from /dev/video0. Even after that, you get raw frame data, and not mpeg video from the device.
PS - I have 3 WebCams, I can give you a dmesg of each one if you need it... They all appear to do the same thing (they are by different manufacturers... iMicro, Sabrent and Agama.) -- also note that these 3 web cams work in Linux (each slightly different, but they work.)
Click to expand...
Click to collapse
Attach all the 3 webcams to your desktop machine, check that each one works and get me a dmesg and a lsmod command output for each one. I want to see what drivers are loaded for each one. We'll have to load the same drivers on the gTablet too after compiling them.
Code:
[I]Attach Camera1 and make sure its working, then,[/I]
desktop$ [B]dmesg > dmesg1.txt[/B]
desktop$ [B]lsmod > lsmod1.txt[/B]
[I]Attach Camera2 and make sure its working, then,[/I]
desktop$ [B]dmesg > dmesg2.txt[/B]
desktop$ [B]lsmod > lsmod2.txt[/B]
[I]Attach Camera3 and make sure its working, then,[/I]
desktop$ [B]dmesg > dmesg3.txt[/B]
desktop$ [B]lsmod > lsmod3.txt[/B]
Caveats: Even if we get all the drivers to load on the gTablet (the V4L drivers, the main camera driver, and, possibly, its support drivers), we still have the problem of displaying the video stream on Android. While I'm happy to write whatever systems code is required, writing the Java UI code for the Android app is beyond my ken. We'll have to ask someone else (try in the main Android development forums on XDA, or, ask user herbert1 here who's helped out before with custom Java apps) once we've checked that we can read data from the V4L device (I'll send you a test prog which'll output .jpg files once every second once we have the drivers sorted out).
It would be great if someone has already ported mplayer for Android.
I'm attaching the APK I found...
Side note:
After looking deeper at 'cat /dev/video0'; it does not work with these webcams... I think this works on my TV Cards that natively displayed mpeg2 video (it's been a while).
See the attached dmesg-*.txt and lsmod-*.txt. Each is named after the company logo on the camera. (I can get the model numbers if the dmesg isn't enough.) Between each dmesg I rebooted the linux box for clarity. (They can all work at once, but I get confused on what is doing what.)
The command I used to test:
Code:
ffmpeg -f alsa -i hw:0,0 -f video4linux2 -s 320x240 -i /dev/video0 test-agama.mpg
(Each of these cameras has audio - The audio is not important for what I am attempting to do...)
About the UI... I've been avoiding this but it maybe time to start work on this =P -- I just realized that the box I'm testing the cameras on has space... I may have to reload linux for 64bit but then I can install the Android SDK and get to UI Development.
All three webcams seem to depend on only 3 kernel modules: uvcvideo, videodev and v4l1_compat.
If all 3 drivers are loaded on the gTablet too, then we should be able to get the video frames from /dev/video0 (or whatever the device).
I'll send you a test program this evening. In the mean time...:
That .apk file contains the application too--the classes.dex file contains the Dalvik executable bytecode. Just install the .apk, then run the app and provide a file name as input. Try "tv://" as the file name once all 3 drivers have been loaded. Do the "chmod 666 /dev/video0" before running the app.
Try the webcam test program in the attachment. The program reads from a user-specified V4L device and outputs JPEG images until you stop it with CTRL-C. Run as:
Code:
$ [B]su[/B] [I]Become superuser[/I]
# [B]mkdir /mnt/sdcard/tmp[/B] [I]Make a tmp dir. for storing imgs[/I]
# [B]./webcam -o /mnt/sdcard/tmp[/B] [I]Capture webcam images until stopped with CTRL-C[/I]
Get usage instructions with "./webcam --help".
EDIT: I actually didn't test the program out because I couldn't locate my webcam. Report if you encounter any bugs.
Quick Update:
I will be trying this tonight... I've been busy trying to get things done. (Little one is going to be born tomorrow!)
Sorry I haven't been able to respond sooner...
rajeevvp said:
Try the webcam test program in the attachment. The program reads from a user-specified V4L device and outputs JPEG images until you stop it with CTRL-C. Run as:
Code:
$ [B]su[/B] [I]Become superuser[/I]
# [B]mkdir /mnt/sdcard/tmp[/B] [I]Make a tmp dir. for storing imgs[/I]
# [B]./webcam -o /mnt/sdcard/tmp[/B] [I]Capture webcam images until stopped with CTRL-C[/I]
Get usage instructions with "./webcam --help".
EDIT: I actually didn't test the program out because I couldn't locate my webcam. Report if you encounter any bugs.
Click to expand...
Click to collapse
I copied it to /mnt/asec (because I can execute things there without remount)
When I run it, i get:
Code:
/mnt/asec # ./webcam -o /mnt/asec/tmp -d /dev/video0
./webcam: error getting video channel info. Invalid argument
I tried without the -d /dev/video0 and got the same result.
(Sorry for the LOOONG delay... Turns out a newborn takes more time and energy than I expected. I'm just now figuring that out... =P It's worth it though.)
Try this simple USB Webcam test app in the attachment which works on VEGAn-Tab 7.1 and GtabComb* (which have the pershoot kernel).
1. Plug the USB webcam in.
Assuming the kernel you're running has the correct USB webcam drivers compiled in--and, most of them do seem to have the V4L subsystem and the UVC camera drivers (which supports a lot of the common USB webcams) built into the kernel--you should see a new /dev/video0 device file pop up.
2. Run these commands to set correct permissions and owners on the device file (some ROMs--eg. GtabCombOver--don't need it):
Code:
$ [B]su[/B]
# [B]chown system.camera /dev/video0[/B]
# [B]chmod 660 /dev/video0[/B]
(Note that if you unplug and replug the webcam, you'll have to re-run the commands on ROMs which don't set the correct permissions and owners.)
3. Now install and run the SimpleWebCam app.
If, for some reason, no /dev/video0 device is created, then your webcam may need different device drivers, which have not been compiled in (or not been written!), in which case you'll have to compile a new kernel with the correct drivers either built-in or as loadable modules. Nothing else described in this post will need change.
adamsoutherland said:
When I run it, i get:
Code:
/mnt/asec # ./webcam -o /mnt/asec/tmp -d /dev/video0
./webcam: error getting video channel info. Invalid argument
I tried without the -d /dev/video0 and got the same result.
Click to expand...
Click to collapse
Looks like I'll have to update the code to make the program use the V4L2 API instead.
Nexus 7
Just tested this on my Google Nexus 7 tablet and it worked fine, I didn't have to modify the permissions either,
PS, it is rooted, of sure if that makes much difference, will test it on my friends stock nexus 7 tomorrow
USB Camera App
I was able to get the app working on my rooted Nexus 7 4.2 and an unrooted Galaxy SIII . How hard would it be to add a video record function to the app?
droidoso said:
How hard would it be to add a video record function to the app?
Click to expand...
Click to collapse
If you want to do that, then it's better to compile a custom native camera-interface library which makes the USB webcam appear as a standard camera (--the rear one, usually). Then, you can use the standard apps to record videos.
See this thread for a precompiled binary and for the source.
Hi guys, i successfully build from scratch a device and vendor tree for my rom, and compile CM13 with no problems.
The roms boots but i get a bootloop when it come into "starting apps". My idea is get adb working on boot proccess.
I was googling but i couldn't get working....
This is my init.qcom.rc: https://drive.google.com/open?id=0ByjBTzGuQ9FIQldHTGxBWjdtczQ
And init.usb.rc generated by CM13: https://drive.google.com/open?id=0ByjBTzGuQ9FIc1ZVNnVpTVExOE0
Thanks
Well guy i was digging around and testing ALOT with no luck. Still can't enable adb at boot.
I try adding this properties on default.prop:
Code:
ro.adb.secure=0
ro.secure=0
ro.debuggable=1
persist.sys.usb.config=mtp,adb
An this in build.prop:
Code:
ro.default_usb_mode=0
persist.service.adb.enable=1
persist.service.debuggable=1
persist.sys.usb.config=mtp,adb
My device is a Forge TV, and it have a single usb port and no sdcard slot, so the only way to get a log is via usb...
In the stock rom, by default, starts in host mode (storage) and you have to go into config to change it into "device mode" to get usb adb working....
Probably i need to manage how the usb port starts at boot, i thought that "ro.default_usb_mode=0" was the solution...but no
Any help will be appreciated!
PS. lsusb doesn't recognize any device....only in fastboot mode
So i found out something interesting...in stock rom if i execute the command echo 0 > /proc/usb_device the device put itself in device mode and i can debug, putting that value to 1 reverts to storage.
I try to put that on init.d, or even on init.qcom.rc in the boot image with no luck....it's so frustating...
Ususally adbd should already be running this late during the boot.
Can you at least get an usb connection during boot? (check lsusb)
If you want to get at least a dmesg output during boot you could try the following:
set this in the build.prop
Code:
debug.sf.nobootanimation=1
set the following in your kernel defconfig
Code:
CONFIG_VGA_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
(not all of them are needed but I forgot which ones are and which ones are not)
add this to the kernel command line
Code:
console=tty1 loglevel=7
This should at least show some output on the phone screen itself.
To run something in the console, you could try to connect an usb keyboard or use something like a scriptable virtual keyboard.
You might need to set loglevel to 1 or 0 if you don't want it to spam your console while working on it.
ruleh said:
Ususally adbd should already be running this late during the boot.
Can you at least get an usb connection during boot? (check lsusb)
If you want to get at least a dmesg output during boot you could try the following:
set this in the build.prop
Code:
debug.sf.nobootanimation=1
set the following in your kernel defconfig
Code:
CONFIG_VGA_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
(not all of them are needed but I forgot which ones are and which ones are not)
add this to the kernel command line
Code:
console=tty1 loglevel=7
This should at least show some output on the phone screen itself.
To run something in the console, you could try to connect an usb keyboard or use something like a scriptable virtual keyboard.
You might need to set loglevel to 1 or 0 if you don't want it to spam your console while working on it.
Click to expand...
Click to collapse
Hi, thanks alot for your answer! My device is a Razer Forge TV wich is an Android TV device. It's equiped with a single full usb 3.0 port and no sdcard slot. The port works in 2 ways, by default in host mode and device mode (the mode i need to get some debug output). In the stock rom executing "echo 0 > /proc/usb_device" enable this mode and remains on reboot. But doesn't seems to work on CM (i put the command on an init.d script). lsusb reports nothing (equal in stock rom when the port is in host mode).
I test the soluton you provided, but instead of bootanimation i get a black screen then optimizing apps, starting apps and reboot (wich is my main problem)....there's no output on screen...i'm stuck on this like 10 days or more...is so annoying...thanks again
achaw said:
Hi, thanks alot for your answer! My device is a Razer Forge TV wich is an Android TV device. It's equiped with a single full usb 3.0 port and no sdcard slot. The port works in 2 ways, by default in host mode and device mode (the mode i need to get some debug output). In the stock rom executing "echo 0 > /proc/usb_device" enable this mode and remains on reboot. But doesn't seems to work on CM (i put the command on an init.d script). lsusb reports nothing (equal in stock rom when the port is in host mode).
I test the soluton you provided, but instead of bootanimation i get a black screen then optimizing apps, starting apps and reboot (wich is my main problem)....there's no output on screen...i'm stuck on this like 10 days or more...is so annoying...thanks again
Click to expand...
Click to collapse
You could try to insert a usb stick, mount it, and then write dmesg and/or adb output to it using init.rc.
Alternatively you could try to enable adb over tcp and connect that way to it.
Alos try to chose a different tty in the kernel command line.
(btw are the following three lines present in your kernel defconfig?)
Code:
CONFIG_VT_CONSOLE=y
CONFIG_TTY=y
CONFIG_VT=y
ruleh said:
You could try to insert a usb stick, mount it, and then write dmesg and/or adb output to it using init.rc.
Alternatively you could try to enable adb over tcp and connect that way to it.
Alos try to chose a different tty in the kernel command line.
(btw are the following three lines present in your kernel defconfig?)
Code:
CONFIG_VT_CONSOLE=y
CONFIG_TTY=y
CONFIG_VT=y
Click to expand...
Click to collapse
I can't mount usb or enable adb over tcp becasuse the system reboot itself at starting apps...
Right now i'm testing with your new config, switching ttys because i'm still getting black screen instead some output...
Well after some days i remember that the Forge iss equipped with a ethernet port...i feel so stupid lol...
So i was able to debug via adb over tcp.... @ruleh thanks alot for your time!
I think "starting apps" happens when zygote is started.
If it is really the case then it should be possible to mount an usb stick and write the logs to it before everything reboots.
According to the init files I have, init.${ro.hardware}.rc would be the place to do the mount+write.
Ideally /system is mounted and /system/bin is in the path to access tools like logcat and dmesg.
Otherwise you could include them in /sbin which is (in most cases) part of the ramdisk.
It would probably be something like this:
Code:
on early-boot
#mkdir /mnt/usb
mount /dev/(usb_stick) /mnt/usb
exec /system/bin/dmesg > /mnt/usb/dmesg.log
exec /system/bin/logcat > /mnt/usb/logcat.log
(I have never used the init.rc files directly so I am not too sure.)
Also did you try "write /proc/usb_device 0" instead of "echo 0 > /proc/usb_device" in the init.rc files? (preferably before zygote starts...maybe init.usb.rc?)
Or you could try to remove the lines referencing zygote from the init.rc files and see if adbd starts then or not.
---------- Post added at 20:17 ---------- Previous post was at 20:16 ----------
achaw said:
Well after some days i remember that the Forge iss equipped with a ethernet port...i feel so stupid lol...
So i was able to debug via adb over tcp.... @ruleh thanks alot for your time!
Click to expand...
Click to collapse
I wish I read this a bit earlier...... oh well
I have a small local network:
• A router not connected to the Internet
• 20 tablets that connect to it
• a computer under linux with LAMP
• a computer under windows with WAMP
When I want to install new apps on the tablets, I have to plug them one by one into a computer and run ADB commands. Would it be possible to execute these commands over WiFi? All tablets are rooted and the network is secure because there is no internet access. So I wouldn't be afraid to use security holes to carry out adb commands over WiFi.
Example of remarkable ADB commands:
• Place files on the tablet: adb push C:/APPLICATIONS/TitaniumBackup/ /sdcard/
• Install several applications: for %f in (C:\ APPLICATIONS\*.Apk) do adb install -t -g -r "%f"
• Start an application: adb shell am start -n com.package.name/com.package.name.ActivityName
•take photos
• activate or deactivate wifi
• Re-boot the tablet: adb reboot
• etc.
I would like to be able to do this on all 20 tablets via the wifi network rather than plugging them one by one into my computer.
Thank you in advance for any ideas you can share with me.
Michael5713 said:
I have a small local network:
• A router not connected to the Internet
• 20 tablets that connect to it
• a computer under linux with LAMP
• a computer under windows with WAMP
When I want to install new apps on the tablets, I have to plug them one by one into a computer and run ADB commands. Would it be possible to execute these commands over WiFi? All tablets are rooted and the network is secure because there is no internet access. So I wouldn't be afraid to use security holes to carry out adb commands over WiFi.
Click to expand...
Click to collapse
Keyword: Wireless ADB. See also here.
Michael5713 said:
I have a small local network:
• A router not connected to the Internet
• 20 tablets that connect to it
• a computer under linux with LAMP
• a computer under windows with WAMP
When I want to install new apps on the tablets, I have to plug them one by one into a computer and run ADB commands. Would it be possible to execute these commands over WiFi? All tablets are rooted and the network is secure because there is no internet access. So I wouldn't be afraid to use security holes to carry out adb commands over WiFi.
Example of remarkable ADB commands:
• Place files on the tablet: adb push C:/APPLICATIONS/TitaniumBackup/ /sdcard/
• Install several applications: for %f in (C:\ APPLICATIONS\*.Apk) do adb install -t -g -r "%f"
• Start an application: adb shell am start -n com.package.name/com.package.name.ActivityName
•take photos
• activate or deactivate wifi
• Re-boot the tablet: adb reboot
• etc.
I would like to be able to do this on all 20 tablets via the wifi network rather than plugging them one by one into my computer.
Thank you in advance for any ideas you can share with me.
Click to expand...
Click to collapse
Yes, android supports ADB over WiFi.
Do a google search for:
"ADB over Wifi"
Sent from my SM-S767VL using Tapatalk
Yes, indeed, the answer was easily found on the web. I asked it because that day I split one big issue into several smaller ones to post requests on your forum. And I never imagined it would be so easy to connect 20 tablets to each other using a local wifi network and adb. The app jwoegerbauer recommended to me is just wonderful. Now I can:
- simultaneously install an application on the 20 tablets from my PC:
FOR /F "skip=1" %x IN ('adb devices') DO start adb -s %x install -r "my-apk.apk"
- uninstall an application on the 20 tablets
- place folders or files I want where I want on all the tablets (they are rooted):
FOR /F "skip=1" %x IN ('adb devices') DO start adb -s %x push C:/my-file/ /sdcard/
- take a file from each tablet or delete it
- even take a screenshot of the tablet I want:
adb -s 192.168.43.122:5555 shell screencap /sdcard/testadb/screen.png
or 20 tablets:
FOR /F "skip=1" %x IN ('adb devices') DO start adb -s %x shell screencap /sdcard/testadb/screen.png
Many thanks to jwoegerbauer for recommending the Wireless ADB application to me.
However, I would like to explore the matter further. The problem I'm looking to solve is to manage a group of tablets without internet and without having to pay an MDM (Android mobile device manager). With ADB, I can install and uninstall applications and send or receive files. Here is what remains to be done:
- I am learning how to remotely change the settings of my 20 tablets. Imagine how tedious it is to turn on the wifi on each of the tablets, then select a network and enter the password. Sometimes I need to turn off wifi or change networks on all tablets. I also have to change the default display or font size. Last week, I've had to set the time and time zone on each one because "network provided time" does not work in a local area network not connected to the Internet. I will tell you which adb formulas I have tested if anyone is interested.
- I also started an other thread on xda-developers: Remotely modify the settings of an android application. Indeed, it takes a plenty of time to manually change the preferences and datas of an application already installed on 20 tablets. If you have any ideas on this, I'd be happy to read your ideas on the forum.
AFAIK USB hubs with 20 ports exist