[P3110] UMS for extSdCard [12.08.: CM10 Edition] - Galaxy Tab 2 7" Android Development

So, I'm currently investigating UMS on Galaxy Tab 2 and I got it somewhat working (for extSdCard).
If you feel brave enough, here's how I did it (ONLY tested on GNU/Linux!):
Q: What prerequisites do I need?
A: You need:
human brain
CWM
root access (aka 'su')
some knowledge about Linux in general won't hurt
After you sucessfully booted into your newly rooted, init.d ready P3110, do this:
Code:
adb root
adb shell
su
mount -o rw,remount /
mount -o rw,remount /system
chmod 0777 /¹
¹ = only if you're on stock rom. on cyanogen this is not needed.
locally, create a file called 'ums', with the following content:
STOCK ROM
Code:
#!/system/bin/busybox sh
if [ "$1" = "enable" ]; then
/system/bin/setprop sys.usb.config mass_storage,adb
/system/bin/setprop persist.sys.usb.config mass_storage,adb
/system/bin/setprop sys.usb.state mass_storage,adb
echo 0 > /sys/devices/virtual/android_usb/android0/enable
umount /mnt/extSdCard
echo "mass_storage,adb" > /sys/class/android_usb/android0/functions
echo "/dev/block/vold/179:25" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun1/file
echo 1 > /sys/devices/virtual/android_usb/android0/enable
fi
if [ "$1" = "disable" ]; then
/system/bin/setprop sys.usb.config mtp,adb
/system/bin/setprop persist.sys.usb.config mtp,adb
/system/bin/setprop sys.usb.state mtp,adb
echo "" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun1/file
echo 0 > /sys/devices/virtual/android_usb/android0/enable
echo "mtp,adb" > /sys/class/android_usb/android0/functions
echo 1 > /sys/devices/virtual/android_usb/android0/enable
vold
fi
Code:
adb push ums /ums
adb shell
su
busybox mv /ums /system/bin/ums
chmod 0777 /system/bin/ums
CYANOGEN MOD 10
May work with CM9 aswell, but I didn't test it.
Code:
#!/system/xbin/busybox sh
if [ "$1" = "enable" ]; then
/system/bin/setprop sys.usb.config mass_storage,adb
/system/bin/setprop persist.sys.usb.config mass_storage,adb
/system/bin/setprop sys.usb.state mass_storage,adb
umount /storage/sdcard1
echo 0 > /sys/devices/virtual/android_usb/android0/enable
echo "mass_storage,adb" > /sys/class/android_usb/android0/functions
echo "/dev/block/vold/179:25" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
echo 1 > /sys/devices/virtual/android_usb/android0/enable
fi
if [ "$1" = "disable" ]; then
/system/bin/setprop sys.usb.config mtp,adb
/system/bin/setprop persist.sys.usb.config mtp,adb
/system/bin/setprop sys.usb.state mtp,adb
echo 0 > /sys/devices/virtual/android_usb/android0/enable
echo "mtp,adb" > /sys/class/android_usb/android0/functions
echo "" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
echo 1 > /sys/devices/virtual/android_usb/android0/enable
vold
fi
Code:
adb push ums /system/bin/ums
adb shell
su
chmod 0777 /system/bin/ums
STEP B
Install some terminal emulator from Market. Open that app and issue
su (when SuperUser asks, give it permission).
next, to enable UMS:
Code:
ums enable
to disable UMS
Code:
ums disable
NOTE: there are two different options: calling 'ums enable' prior to connecting with USB or while connected. Different ROMs behave differently, try what works best for you.
If everyhing is fine (and you're running Linux), dmesg should show something like:
Code:
[ 1680.264023] usb 1-6: new high-speed USB device number 29 using ehci_hcd
[ 1680.356086] hub 1-0:1.0: unable to enumerate USB device on port 6
[ 1680.636060] usb 1-6: new high-speed USB device number 30 using ehci_hcd
[ 1680.769829] usb 1-6: New USB device found, idVendor=04e8, idProduct=685e
[ 1680.769832] usb 1-6: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[ 1680.769835] usb 1-6: Product: GT-P3110
[ 1680.769837] usb 1-6: Manufacturer: samsung
[ 1680.769838] usb 1-6: SerialNumber: c1607c00051963f
[ 1680.771433] scsi26 : usb-storage 1-6:1.0
[ 1681.769047] scsi 26:0:0:0: Direct-Access SAMSUNG File-Stor Gadget 0001 PQ: 0 ANSI: 2
[ 1681.770784] scsi 26:0:0:1: Direct-Access SAMSUNG File-Stor Gadget 0001 PQ: 0 ANSI: 2
[ 1681.779155] sd 26:0:0:0: [sdc] 8052736 512-byte logical blocks: (4.12 GB/3.83 GiB)
[ 1681.782898] sd 26:0:0:0: [sdc] Write Protect is off
[ 1681.782901] sd 26:0:0:0: [sdc] Mode Sense: 0f 00 00 00
[ 1681.787146] sd 26:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1681.794399] sd 26:0:0:1: [sdd] Attached SCSI removable disk
[ 1681.804415] sdc:
[ 1681.809590] sd 26:0:0:0: [sdc] Attached SCSI removable disk
And now you can access extSdCard as ordinary UMS.
TODO:
some button/widget to easily en/disable UMS
make it work with internal storage, too
Suggestions welcome :]
Credits:
Commands for ums derived from: http://forum.xda-developers.com/showthread.php?t=1785243

Tried this on my P3113 running today's build of CM10. Changed /mnt/extSdCard/ to /storage/sdcard1/ in accordance with the ROM's setup. Got the following error:
Code:
can't create /sys/devices/virtual/android_usb/android0/f_mass_storage/lun1/file: No such file or directory

I don't use CM, only stock rom. I guess it's simply a different virtual device, you should investigate in /sys/devices/virtual/
Meanwhile I'm currently trying to improve the script, it does not always work for me, I need to check why.
Edit:
improved 'ums' script:
- better handling of returning to MTP
- better handling of entering UMS
I noticed, that it does not always work, when running 'ums enable' from within 'adb shell'.
But when doing from a terminal emulator on the tablet - disconnected from PC - it always works.

Setialpha said:
I don't use CM, only stock rom. I guess it's simply a different virtual device, you should investigate in /sys/devices/virtual/
Meanwhile I'm currently trying to improve the script, it does not always work for me, I need to check why. Next version atleast properly does returning to MTP.
Click to expand...
Click to collapse
I think it needs to run a little later during boot.
Sent from my ADR6425LVW using xda premium

See my edited post above.
Ah and it's not running from init.d (that's not called late enough, as vold is one of the last in the boot process) - it's run manually, right before you want to acces your stuff.

Setialpha said:
See my edited post above.
Ah and it's not running from init.d (that's not called late enough, as vold is one of the last in the boot process) - it's run manually, right before you want to acces your stuff.
Click to expand...
Click to collapse
Gotcha
Sent from my ADR6425LVW using xda premium

Yeah, when I was screwing around with remapping the mount points of sdcard and extSdCard, I found that vold runs really late in the boot-up process. The only easy way I found to get shell scripts to run that late is an app (like Script Manager), since apps can register an event handler and then they do stuff "at boot time", which runs after init.d, userinit.sh, and vold.
So wait, does this access for the external micro SD card from MTP over to UMS? And by 'UMS' do you mean regular-style USB mass storage device? As in "hey you can just read/write files instead of having to wait for the slow ass MTP server!"?
Because that's AWESOME!

DivinityCycle said:
Yeah, when I was screwing around with remapping the mount points of sdcard and extSdCard, I found that vold runs really late in the boot-up process. The only easy way I found to get shell scripts to run that late is an app (like Script Manager), since apps can register an event handler and then they do stuff "at boot time", which runs after init.d, userinit.sh, and vold.
So wait, does this access for the external micro SD card from MTP over to UMS? And by 'UMS' do you mean regular-style USB mass storage device? As in "hey you can just read/write files instead of having to wait for the slow ass MTP server!"?
Because that's AWESOME!
Click to expand...
Click to collapse
Yes, regular USB as in 'plug in an USB-Stick'. It's a hack so it may not always work (especially not when plugged in with ADB active) but hey - better than nothing. I will try to improve that thingy, though.

does stock rom have ums?

despine said:
does stock rom have ums?
Click to expand...
Click to collapse
No
Sent from my ADR6425LVW using xda premium

Update: additional script/steps for CM10 added - have fun

This works flawlessly on Linux, but not Windows. Any idea what the difference is (besides the obvious)?

Macadamia Daze said:
This works flawlessly on Linux, but not Windows. Any idea what the difference is (besides the obvious)?
Click to expand...
Click to collapse
I don't know. I may use my old XP installation (it's totally dusty - not used for long time) to test this week.

Related

[Q] Full linux on G1?

Hey everyone!!
Since if got new phone (Moto Milestone), i was wondering is it possible to install linux (gentoo, debian) on my old G1?
So, not in chroot, but as only OS on device! i dont need GUI, just shell. I was thinking that /, boot, etc, bin and maybe some more would be in device rom, and rest on sdcard!!
3g modem is not important to work, but wifi and gps are must!!
can this be done? i want to find some use of my old, but faithfull, G1!!
P.S. mods, if I posted this in wrong topic, I appologize!
thx for any hints. i have 6+ years on linux experience, mostly with gentoo, so recompiling and configuring isn't big problem!!
Sent from my Milestone
amossam said:
Hey everyone!!
thx for any hints. i have 6+ years on linux experience, mostly with gentoo, so recompiling and configuring isn't big problem!!
Click to expand...
Click to collapse
so do it then
not sure why you think its difficult
Firerat said:
so do it then
not sure why you think its difficult
Click to expand...
Click to collapse
well, i think it wouldn't be easy, and I'm asking is it possible!
with all due respect, i don't think that yours tone is in place.
so just for your info, i appreciate your work werry much!
i don't know too much about booting process of G1, but i know that SPL transfers boot process to kernel, so i assume that there is no boot flag! and i cannot find any detailed explanation of booting process that is detailed and easy to understand...
so, instead of using that tone, i would be gratefull if you have any link to share!!
Sent from my Milestone
amossam said:
well, i think it wouldn't be easy, and I'm asking is it possible!
with all due respect, i don't think that yours tone is in place.
so just for your info, i appreciate your work werry much!
i don't know too much about booting process of G1, but i know that SPL transfers boot process to kernel, so i assume that there is no boot flag! and i cannot find any detailed explanation of booting process that is detailed and easy to understand...
so, instead of using that tone, i would be gratefull if you have any link to share!!
Sent from my Milestone
Click to expand...
Click to collapse
i have 6+ years on linux experience, mostly with gentoo, so recompiling and configuring isn't big problem!!
Click to expand...
Click to collapse
here is a very usefull link
http://www.google.com
it is great for doing internet searches
don't clam to be some linux guru if you are not
http://www.unixweblog.com/2010/03/htc-dreamg1-dual-boot-native-debian/
and here is how I found it
I googled
native linux on g1
you will see links to xda
its been done, and done and done
there is absolutely nothing wrong with the firerat's tone. I actually thanked him for that post... it was classic firerat!
I think if you learned how to use the search function.. you will see it haz been done. google is your best friend!! hey, bing works as well. ask jeeves may not... but such is the element of being a man of linus -- most linux people dont go into a police station and ask for the number to dial 911 and where they can dial this number to get some police help.
jesus.......i just did a search... it goes all the way back to the days of jesus h freke. 1998.
just frigging search. how can you operate a phone and not be able to operate a basic google search..
hold one second... my 4 year old dog who has half his chromosomes just did it...wow.... here it is.. http://forum.xda-developers.com/showthread.php?t=444419&page=40
plz dont thank me either. if you must thank someone, thank firerat... but i dont know if he wants your thanx.
have fun chrootin! and its good to see people care enough about their dream to not toss it in the recycle bin at tmobile. those things are powerful.
Firerat said:
here is a very usefull link
http://www.google.com
it is great for doing internet searches
don't clam to be some linux guru if you are not
http://www.unixweblog.com/2010/03/htc-dreamg1-dual-boot-native-debian/
and here is how I found it
I googled
native linux on g1
you will see links to xda
its been done, and done and done
Click to expand...
Click to collapse
its like watching fire be invented all over again!
i humbly applogise that i asked one question. i did some research but i couldn't get the right keywords...
btw, i didn't said that i'm linux guru, only that i have experience...
nwm, i'll move on on my own...
can please mod lock this or delete, obviously this is another stupid duplicate post...
Sent from my Milestone
amossam said:
i humbly applogise that i asked one question. i did some research but i couldn't get the right keywords...
btw, i didn't said that i'm linux guru, only that i have experience...
nwm, i'll move on on my own...
can please mod lock this or delete, obviously this is another stupid duplicate post...
Sent from my Milestone
Click to expand...
Click to collapse
install linux on g1
http://www.htc-dream-g1.net/en/Linux/Debian/Native
currently the 4th hit
Firerat said:
install linux on g1
http://www.htc-dream-g1.net/en/Linux/Debian/Native
currently the 4th hit
Click to expand...
Click to collapse
how simple can you get? lol
{Mod edit}
Here's how to do this:
HTC Dream Native Debian Linux - bibanon/android-development-codex Wiki​This guide was mostly organized by Novaspirit, refined on the Debian Wiki, and based on notes from XDA-Developers.
Here, we've fixed some glaring errors and updated it for Debian squeeze.
This guide will create a dual-boot Linux and Android system. The phone will boot normally into Android; just hold home+power when turning on to enter Debian Linux.
Working / Not Working​Working
Phone can boot!
SDCard reader/writer
Keyboard
LEDs
Touchscreen
Vibrator
USB Ethernet
Xorg with OpenMoko Kernel
Phone Call : I am able to answer an incomming call from console!
Unlock SIM Card and register on Network
Working with bugs
Trackball - No event on click with ball - must click and move ball slightly
TouchScreen (MonoTouch) - I can use it in console FBDEV, but with Xorg, the calibration doesn’t work - calibration is very difficult but doable
ALSA - Sound is low, when phone works, sound is very low, and alsamixer, for select OutPut has device bugs.
Xorg with my Kernel - The phone crashes (freeze) when you leave Xorg found this only happens sometimes not all
Not working
WiFi card is detected, but crashes when doing “ifconfig wlan0 up”.
Not tested
GPS
Accelerometers/Compas
Other USB Gadgets, like Storage
Bluetooth
Internet throug GSM/3G APN
Power management
Accelerated GL
Camera
TouchScreen (MultiTouch)
HOWTO​You will need:
A laptop with Debian-based Linux (Ubuntu, Debian, Linux Mint, etc.)
Just run it off a live CD
An HTC Dream/G1 or MyTouch 3G
8GB or larger SDCard
4GB for Linux, 4GB for Android
An Android 1.6 or higher Custom ROM that supports EXT2/3
only a few older Android versions lack it.
USB Debugging Enabled
HardSPL and Engineering SPL
gives you fastboot support
ADB and Fastboot
The easiest way to install them is to use Minimal ADB.
Partitioning the SDCard​
It's possible to use Android itself to partition it, but that's another guide...
Click to expand...
Click to collapse
obtain gparted using:
sudo apt-get install gparted
select your sdcard and select it on the top right menu
You will need three partitions:
fat32 (android)
ext3 (android apps and stuff if you got app2sd)
ext3 (debian)
For example, an 8GB SDCard would be partitioned like this:
2 GB FAT32 for Android
2 GB EXT3 for app2sd
4 GB EXT3 for my real Debian
After creating the partitions, make sure to record the names, found in gparted's top-right corner (ex. /dev/sdb1, /dev/sdc6).
The G1 will see those partitions with names: /dev/mmcblk0p3 or whatnot. Just add the last number of the /dev/sdb1 name, replacing that 3.
Keep your SDCard plugged in.
Generate the Debian Root Filesystem with debootstrap​We will use debootstrap to install all the necessary system packages to an image, which you will flash onto the G1.
mkdir debdroid
sudo /usr/sbin/debootstrap --foreign --arch armel squeeze debdroid/ http://http.debian.net/debian
Copy debootstrap to the SDCard​We now need to copy the system image to the G1. Change /dev/sdb3 to the EXT3 partition for Debian on your SDCard (The names were previously obtained from GParted).
mount /dev/sdb3 /mnt/memory # change correct device
sudo cp -pfr debdroid/* /mnt/memory/
umount /mnt/memory
debootstrap Second Stage​Now reboot into your G1, and connect it to the computer to begin the second phase of installation. Make sure USB Debugging is enabled, and your phone is recognized by ADB.
Mount the debian EXT3 partition:
adb shell
mkdir /data/mnt
mount -t ext3 /dev/block/mmcblk0p3 /data/mnt
Now your debian partition should be mounted to file system at /data/mnt
Next, we will chroot into the debian partition to start the second stage of installation. This will take about 25 minutes, so be patient and keep your phone charged.
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
chroot /data/mnt /debootstrap/debootstrap --second-stage
umount /data/mnt
rmdir /data/mnt
Set the SSH service to start on boot​We will need an SSH service running on the G1 for internet tethering from the PC. We have to install Galoula's SSH modules, and edit configuration files to start SSH on boot.
Insert the sdcard back into your Linux PC and run these commands:
(replace /dev/sdb2 with the name of your debian EXT3 partition)
(the package links will have to be updated for squeeze)
mount /dev/sdb2 /mnt
cd /mnt/tmp
wget http://www.galoula.net/fr/Tutoriels...ALOULA-001/Modules-2.6.32_GALOULA-001.tar.bz2
tar -jxvf Modules-2.6.32_GALOULA-001.tar.bz2 -C ..
echo g_ether >> ../etc/modules
echo "auto lo" >> ../etc/network/interfaces
echo "iface lo inet loopback" >> ../etc/network/interfaces
echo "auto usb0" >> ../etc/network/interfaces
echo "iface usb0 inet static" >> ../etc/network/interfaces
echo " address 192.168.0.202" >> ../etc/network/interfaces
echo " netmask 255.255.255.192" >> ../etc/network/interfaces
echo " network 192.168.100.0" >> ../etc/network/interfaces
echo " gateway 192.168.0.200" >> ../etc/network/interfaces
echo "none /sys sysfs rw,nosuid,nodev,noexec 0 0" >> ../etc/fstab
echo "none /proc proc rw,nosuid,nodev,noexec 0 0" >> ../etc/fstab
echo "udev /dev tmpfs rw,size=10240k,mode=755 0 0" >> ../etc/fstab
echo "devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0" >> ../etc/fstab
echo "HTC-Dream" > ../etc/hostname
echo "127.0.0.1 localhost HTC-Dream" > ../etc/hosts
cat /etc/resolv.conf > ../etc/resolv.conf
mkdir ../dev/pts
sync
cd
umount /mnt
Later on, we will also install the SSH packages on the phone itself.
Now insert the sdcard back into the G1, and plug the G1 into the computer.
Chroot Setup​
Note: Don't worry; we are still installing Native Debian Linux. We are only temporarily using a chroot for greater convenience when pumping in commands.
Click to expand...
Click to collapse
Make sure your Android G1 has a WiFi internet connection and USB Debugging enabled.
Set your phone to Stay Awake, so the phone will not suddenly cut off your wifi connection. Settings->Application->Development->Stay Awake
Disable WiFi sleep, which will cause download issues. Settings->Wifi->Menu Button->Advanced->Wifi Sleep Policy->Never sleep when plugged in
Enter the chroot​First, mount the Debian partition on the G1 from your PC, using these commands:
adb shell
mkdir /data/mnt
mount -t ext3 /dev/block/mmcblk0p3 /data/mnt
Then, enter the chroot:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
chroot /data/mnt /bin/bash
Set up Squeeze Package Repositories​This will install the necessary Debian repositories and some basic packages to the G1.
Type the commands below to add squeeze package repositories:
echo "deb http://ftp.debian.org/debian/ squeeze main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib" >> /etc/apt/sources.list
echo "deb http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.debian.org/debian squeeze-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian squeeze-updates main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get install bzip2 build-essential
Install SSH​Finally, we can install the openssh packages. An SSH server allows you to access a USB connected phone from your computer, so you can pump in terminal commands using copy and paste.
Type this command in the same chroot at your computer:
apt-get install openssh-server openssh-client libkrb53 openssh-blacklist libedit2 udev libvolume-id0 libkeyutils1
/etc/init.d/ssh stop
Note: During installation, the G1 might restart unexpectedly. Simply enter the chroot again (see previous section).
Click to expand...
Click to collapse
Create a Root user password and exit the Chroot​We will want to create a root user password.
passwd
Type in the password you want to use (make sure that you only use numbers and letters! special characters cannot be easily entered).
As a security measure, text will not appear onscreen, so just keep typing and press enter when you've put it in.
Exit the Chroot​We're all done, so you can exit the chroot.
sync
exit # exits the chroot
umount /mnt
rmdir /data/mnt
exit # exits `adb shell`
Boot Linux​Put the sdcard back into your G1, Plug in your G1 to the PC, and type this command to enter fastboot mode:
adb reboot bootloader
Type this command on your Linux PC to download and boot the kernel.
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Native_Debian/2.6.32_GALOULA-001/zImage
fastboot -c "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p3 rootdelay=2 fbcon=rotate:1" boot ./zImage
Your phone will now boot into Debian.
Type in the Username and Password​As a security feature, nothing will be displayed while you type your password.
username: root
password: <the password that you created>
Tether your G1's internet connection to the PC​We have to forward your PC's internet connection to your G1. Type these commands in the computer:
ifconfig usb0 192.168.0.200/26
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
(not tested) Alternatively, use these commands: (recommended by Jorge Peñalba)
ifconfig usb0 192.168.0.200/26\
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE\
echo 1 \> /proc/sys/net/ipv4/ip\_forward\
ssh 192.168.0.202 -l root\
iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE\
echo 0 \> /proc/sys/net/ipv4/ip\_forward
SSH into the G1​Use this command to SSH into the G1's command line, so you can send commands to it from your computer. Log into your phone with the same username and password you set before.
ssh 192.168.0.202
Enable Dual Boot (optional)​We will create a custom kernel for the phone to dual-boot between Android and Linux. This way, you will be able to hold power+home to boot Linux.
Use your computer to SSH into the G1 and run these commands:
cd /usr/src
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Outils/mkboot.tar.bz2
tar -jxvf mkboot.tar.bz2
cd mkboot
make && make install
cd /usr/src
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Outils/android-imagetools.tar.bz2
tar -jxvf android-imagetools.tar.bz2
cd android-imagetools
make && make install
cd /tmp
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Native_Debian/2.6.32_GALOULA-001/zImage
wget http://wiki.openmoko.org/images/f/f6/Newramdisk.cpio.gz
mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p3 rootdelay=2 fbcon=rotate:1" \
--kernel zImage --ramdisk ./Newramdisk.cpio.gz -o Recovery-boot.img
cat /dev/zero > /dev/mtd1
mkdir /dev/mtd
cd /dev/ && for i in `ls -w1 mtd?`;do ln -s /dev/$i /dev/mtd/$i; done && cd - || cd -
flash_image recovery Recovery-boot.img
Normal boot will get you into Android
Holding home and power will boot into debian
Galoula's Netinstall​How to Install Ubuntu with Ubuntu-Install.img ?
Download Ubuntu-Install.img on your Linux-PC.
Turn off your HTC G1.
Turn On HTC G1 in FastBosst mode : Power on with hold the camera button, if it's OK, you can see 3 Android on Skateboards.
In this screen press Back.
Connect USB cable betweek PC and G1.
On your Linux PC type this command : "fastboot boot Ubuntu-Install.img" without quotes.
If the G1 don't start, press the back button on G1.
The G1 start the Ubuntu Installer.
Warning ! My image is set for a French G1 keymap.
The special keys are :
Up : End
Down : Back
Left : Home
Right : Call
Escape : menu (on keyboard)
Tab : Right alt with Q.
Control : Search Button
For get networking works : This kernel use USB-NET.
To configure IT :​On the Linux PC :
sudo ifconfig usb0 192.168.0.200 netmask 255.255.255.0 up
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sysctl -w net.ipv4.ip_forward=1
On the G1 :​When the installer tell you for Networking Configuration, chose usb0
You can cancel the DHCP discover.
Type this settings :
IP Address : 192.168.0.202
NetMask : 255.255.255.0
GateWay : 192.168.0.200
DNS : Your DNS
The setup tell you because it can't download "kernel modules", chose continue, my kernel can read the SDCARD for the installation, but it can't read internal partition for more secure.
The setup can tell you a warning because the kernel can't be installed, please continue (and ignore it) because, Ubuntu-Rescue.img contain the appropriate kernel.
Actualy, the file is : boot-recovery.img
Now, you can setup your Ubuntu !
Galoula's Netinstall images
Page Index for this GitHub Wiki
Source: Github
ppp- said:
Here's how to do this:
HTC Dream Native Debian Linux - bibanon/android-development-codex Wiki​This guide was mostly organized by Novaspirit, refined on the Debian Wiki, and based on notes from XDA-Developers.
Here, we've fixed some glaring errors and updated it for Debian squeeze.
This guide will create a dual-boot Linux and Android system. The phone will boot normally into Android; just hold home+power when turning on to enter Debian Linux.
Working / Not Working​Working
Phone can boot!
SDCard reader/writer
Keyboard
LEDs
Touchscreen
Vibrator
USB Ethernet
Xorg with OpenMoko Kernel
Phone Call : I am able to answer an incomming call from console!
Unlock SIM Card and register on Network
Working with bugs
Trackball - No event on click with ball - must click and move ball slightly
TouchScreen (MonoTouch) - I can use it in console FBDEV, but with Xorg, the calibration doesn’t work - calibration is very difficult but doable
ALSA - Sound is low, when phone works, sound is very low, and alsamixer, for select OutPut has device bugs.
Xorg with my Kernel - The phone crashes (freeze) when you leave Xorg found this only happens sometimes not all
Not working
WiFi card is detected, but crashes when doing “ifconfig wlan0 up”.
Not tested
GPS
Accelerometers/Compas
Other USB Gadgets, like Storage
Bluetooth
Internet throug GSM/3G APN
Power management
Accelerated GL
Camera
TouchScreen (MultiTouch)
HOWTO​You will need:
A laptop with Debian-based Linux (Ubuntu, Debian, Linux Mint, etc.)
Just run it off a live CD
An HTC Dream/G1 or MyTouch 3G
8GB or larger SDCard
4GB for Linux, 4GB for Android
An Android 1.6 or higher Custom ROM that supports EXT2/3
only a few older Android versions lack it.
USB Debugging Enabled
HardSPL and Engineering SPL
gives you fastboot support
ADB and Fastboot
The easiest way to install them is to use Minimal ADB.
Partitioning the SDCard​
obtain gparted using:
sudo apt-get install gparted
select your sdcard and select it on the top right menu
You will need three partitions:
fat32 (android)
ext3 (android apps and stuff if you got app2sd)
ext3 (debian)
For example, an 8GB SDCard would be partitioned like this:
2 GB FAT32 for Android
2 GB EXT3 for app2sd
4 GB EXT3 for my real Debian
After creating the partitions, make sure to record the names, found in gparted's top-right corner (ex. /dev/sdb1, /dev/sdc6).
The G1 will see those partitions with names: /dev/mmcblk0p3 or whatnot. Just add the last number of the /dev/sdb1 name, replacing that 3.
Keep your SDCard plugged in.
Generate the Debian Root Filesystem with debootstrap​We will use debootstrap to install all the necessary system packages to an image, which you will flash onto the G1.
mkdir debdroid
sudo /usr/sbin/debootstrap --foreign --arch armel squeeze debdroid/ http://http.debian.net/debian
Copy debootstrap to the SDCard​We now need to copy the system image to the G1. Change /dev/sdb3 to the EXT3 partition for Debian on your SDCard (The names were previously obtained from GParted).
mount /dev/sdb3 /mnt/memory # change correct device
sudo cp -pfr debdroid/* /mnt/memory/
umount /mnt/memory
debootstrap Second Stage​Now reboot into your G1, and connect it to the computer to begin the second phase of installation. Make sure USB Debugging is enabled, and your phone is recognized by ADB.
Mount the debian EXT3 partition:
adb shell
mkdir /data/mnt
mount -t ext3 /dev/block/mmcblk0p3 /data/mnt
Now your debian partition should be mounted to file system at /data/mnt
Next, we will chroot into the debian partition to start the second stage of installation. This will take about 25 minutes, so be patient and keep your phone charged.
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
chroot /data/mnt /debootstrap/debootstrap --second-stage
umount /data/mnt
rmdir /data/mnt
Set the SSH service to start on boot​We will need an SSH service running on the G1 for internet tethering from the PC. We have to install Galoula's SSH modules, and edit configuration files to start SSH on boot.
Insert the sdcard back into your Linux PC and run these commands:
(replace /dev/sdb2 with the name of your debian EXT3 partition)
(the package links will have to be updated for squeeze)
mount /dev/sdb2 /mnt
cd /mnt/tmp
wget http://www.galoula.net/fr/Tutoriels...ALOULA-001/Modules-2.6.32_GALOULA-001.tar.bz2
tar -jxvf Modules-2.6.32_GALOULA-001.tar.bz2 -C ..
echo g_ether >> ../etc/modules
echo "auto lo" >> ../etc/network/interfaces
echo "iface lo inet loopback" >> ../etc/network/interfaces
echo "auto usb0" >> ../etc/network/interfaces
echo "iface usb0 inet static" >> ../etc/network/interfaces
echo " address 192.168.0.202" >> ../etc/network/interfaces
echo " netmask 255.255.255.192" >> ../etc/network/interfaces
echo " network 192.168.100.0" >> ../etc/network/interfaces
echo " gateway 192.168.0.200" >> ../etc/network/interfaces
echo "none /sys sysfs rw,nosuid,nodev,noexec 0 0" >> ../etc/fstab
echo "none /proc proc rw,nosuid,nodev,noexec 0 0" >> ../etc/fstab
echo "udev /dev tmpfs rw,size=10240k,mode=755 0 0" >> ../etc/fstab
echo "devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0" >> ../etc/fstab
echo "HTC-Dream" > ../etc/hostname
echo "127.0.0.1 localhost HTC-Dream" > ../etc/hosts
cat /etc/resolv.conf > ../etc/resolv.conf
mkdir ../dev/pts
sync
cd
umount /mnt
Later on, we will also install the SSH packages on the phone itself.
Now insert the sdcard back into the G1, and plug the G1 into the computer.
Chroot Setup​
Make sure your Android G1 has a WiFi internet connection and USB Debugging enabled.
Set your phone to Stay Awake, so the phone will not suddenly cut off your wifi connection. Settings->Application->Development->Stay Awake
Disable WiFi sleep, which will cause download issues. Settings->Wifi->Menu Button->Advanced->Wifi Sleep Policy->Never sleep when plugged in
Enter the chroot​First, mount the Debian partition on the G1 from your PC, using these commands:
adb shell
mkdir /data/mnt
mount -t ext3 /dev/block/mmcblk0p3 /data/mnt
Then, enter the chroot:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
chroot /data/mnt /bin/bash
Set up Squeeze Package Repositories​This will install the necessary Debian repositories and some basic packages to the G1.
Type the commands below to add squeeze package repositories:
echo "deb http://ftp.debian.org/debian/ squeeze main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib" >> /etc/apt/sources.list
echo "deb http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.debian.org/debian squeeze-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian squeeze-updates main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get install bzip2 build-essential
Install SSH​Finally, we can install the openssh packages. An SSH server allows you to access a USB connected phone from your computer, so you can pump in terminal commands using copy and paste.
Type this command in the same chroot at your computer:
apt-get install openssh-server openssh-client libkrb53 openssh-blacklist libedit2 udev libvolume-id0 libkeyutils1
/etc/init.d/ssh stop
Create a Root user password and exit the Chroot​We will want to create a root user password.
passwd
Type in the password you want to use (make sure that you only use numbers and letters! special characters cannot be easily entered).
As a security measure, text will not appear onscreen, so just keep typing and press enter when you've put it in.
Exit the Chroot​We're all done, so you can exit the chroot.
sync
exit # exits the chroot
umount /mnt
rmdir /data/mnt
exit # exits `adb shell`
Boot Linux​Put the sdcard back into your G1, Plug in your G1 to the PC, and type this command to enter fastboot mode:
adb reboot bootloader
Type this command on your Linux PC to download and boot the kernel.
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Native_Debian/2.6.32_GALOULA-001/zImage
fastboot -c "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p3 rootdelay=2 fbcon=rotate:1" boot ./zImage
Your phone will now boot into Debian.
Type in the Username and Password​As a security feature, nothing will be displayed while you type your password.
username: root
password: <the password that you created>
Tether your G1's internet connection to the PC​We have to forward your PC's internet connection to your G1. Type these commands in the computer:
ifconfig usb0 192.168.0.200/26
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
(not tested) Alternatively, use these commands: (recommended by Jorge Peñalba)
ifconfig usb0 192.168.0.200/26\
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE\
echo 1 \> /proc/sys/net/ipv4/ip\_forward\
ssh 192.168.0.202 -l root\
iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE\
echo 0 \> /proc/sys/net/ipv4/ip\_forward
SSH into the G1​Use this command to SSH into the G1's command line, so you can send commands to it from your computer. Log into your phone with the same username and password you set before.
ssh 192.168.0.202
Enable Dual Boot (optional)​We will create a custom kernel for the phone to dual-boot between Android and Linux. This way, you will be able to hold power+home to boot Linux.
Use your computer to SSH into the G1 and run these commands:
cd /usr/src
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Outils/mkboot.tar.bz2
tar -jxvf mkboot.tar.bz2
cd mkboot
make && make install
cd /usr/src
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Outils/android-imagetools.tar.bz2
tar -jxvf android-imagetools.tar.bz2
cd android-imagetools
make && make install
cd /tmp
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Native_Debian/2.6.32_GALOULA-001/zImage
wget http://wiki.openmoko.org/images/f/f6/Newramdisk.cpio.gz
mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p3 rootdelay=2 fbcon=rotate:1" \
--kernel zImage --ramdisk ./Newramdisk.cpio.gz -o Recovery-boot.img
cat /dev/zero > /dev/mtd1
mkdir /dev/mtd
cd /dev/ && for i in `ls -w1 mtd?`;do ln -s /dev/$i /dev/mtd/$i; done && cd - || cd -
flash_image recovery Recovery-boot.img
Normal boot will get you into Android
Holding home and power will boot into debian
Galoula's Netinstall​How to Install Ubuntu with Ubuntu-Install.img ?
Download Ubuntu-Install.img on your Linux-PC.
Turn off your HTC G1.
Turn On HTC G1 in FastBosst mode : Power on with hold the camera button, if it's OK, you can see 3 Android on Skateboards.
In this screen press Back.
Connect USB cable betweek PC and G1.
On your Linux PC type this command : "fastboot boot Ubuntu-Install.img" without quotes.
If the G1 don't start, press the back button on G1.
The G1 start the Ubuntu Installer.
Warning ! My image is set for a French G1 keymap.
The special keys are :
Up : End
Down : Back
Left : Home
Right : Call
Escape : menu (on keyboard)
Tab : Right alt with Q.
Control : Search Button
For get networking works : This kernel use USB-NET.
To configure IT :​On the Linux PC :
sudo ifconfig usb0 192.168.0.200 netmask 255.255.255.0 up
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sysctl -w net.ipv4.ip_forward=1
On the G1 :​When the installer tell you for Networking Configuration, chose usb0
You can cancel the DHCP discover.
Type this settings :
IP Address : 192.168.0.202
NetMask : 255.255.255.0
GateWay : 192.168.0.200
DNS : Your DNS
The setup tell you because it can't download "kernel modules", chose continue, my kernel can read the SDCARD for the installation, but it can't read internal partition for more secure.
The setup can tell you a warning because the kernel can't be installed, please continue (and ignore it) because, Ubuntu-Rescue.img contain the appropriate kernel.
Actualy, the file is : boot-recovery.img
Now, you can setup your Ubuntu !
Galoula's Netinstall images
Page Index for this GitHub Wiki
Source: Github
Click to expand...
Click to collapse
Wow. That's a ton of info! I'll try.
ppp- said:
{Mod edit}
Here's how to do this:
Click to expand...
Click to collapse
@ppp- I've edited your post above and removed the part that was simply intended to offend another user. Be aware that XDA is not like the common social media, and we're enforcing the XDA Forum Rules that have been established, and to which you agreed to adhere when you registered on this private platform a few days ago. Please review the forum rules with special emphasis on rule no. 2 regarding member conduct. Thanks for your cooperation.
Regards
Oswald Boelcke
Senior Moderator
ppp- said:
{Mod edit}
Here's how to do this:
HTC Dream Native Debian Linux - bibanon/android-development-codex Wiki​This guide was mostly organized by Novaspirit, refined on the Debian Wiki, and based on notes from XDA-Developers.
Here, we've fixed some glaring errors and updated it for Debian squeeze.
This guide will create a dual-boot Linux and Android system. The phone will boot normally into Android; just hold home+power when turning on to enter Debian Linux.
Working / Not Working​Working
Phone can boot!
SDCard reader/writer
Keyboard
LEDs
Touchscreen
Vibrator
USB Ethernet
Xorg with OpenMoko Kernel
Phone Call : I am able to answer an incomming call from console!
Unlock SIM Card and register on Network
Working with bugs
Trackball - No event on click with ball - must click and move ball slightly
TouchScreen (MonoTouch) - I can use it in console FBDEV, but with Xorg, the calibration doesn’t work - calibration is very difficult but doable
ALSA - Sound is low, when phone works, sound is very low, and alsamixer, for select OutPut has device bugs.
Xorg with my Kernel - The phone crashes (freeze) when you leave Xorg found this only happens sometimes not all
Not working
WiFi card is detected, but crashes when doing “ifconfig wlan0 up”.
Not tested
GPS
Accelerometers/Compas
Other USB Gadgets, like Storage
Bluetooth
Internet throug GSM/3G APN
Power management
Accelerated GL
Camera
TouchScreen (MultiTouch)
HOWTO​You will need:
A laptop with Debian-based Linux (Ubuntu, Debian, Linux Mint, etc.)
Just run it off a live CD
An HTC Dream/G1 or MyTouch 3G
8GB or larger SDCard
4GB for Linux, 4GB for Android
An Android 1.6 or higher Custom ROM that supports EXT2/3
only a few older Android versions lack it.
USB Debugging Enabled
HardSPL and Engineering SPL
gives you fastboot support
ADB and Fastboot
The easiest way to install them is to use Minimal ADB.
Partitioning the SDCard​
obtain gparted using:
sudo apt-get install gparted
select your sdcard and select it on the top right menu
You will need three partitions:
fat32 (android)
ext3 (android apps and stuff if you got app2sd)
ext3 (debian)
For example, an 8GB SDCard would be partitioned like this:
2 GB FAT32 for Android
2 GB EXT3 for app2sd
4 GB EXT3 for my real Debian
After creating the partitions, make sure to record the names, found in gparted's top-right corner (ex. /dev/sdb1, /dev/sdc6).
The G1 will see those partitions with names: /dev/mmcblk0p3 or whatnot. Just add the last number of the /dev/sdb1 name, replacing that 3.
Keep your SDCard plugged in.
Generate the Debian Root Filesystem with debootstrap​We will use debootstrap to install all the necessary system packages to an image, which you will flash onto the G1.
mkdir debdroid
sudo /usr/sbin/debootstrap --foreign --arch armel squeeze debdroid/ http://http.debian.net/debian
Copy debootstrap to the SDCard​We now need to copy the system image to the G1. Change /dev/sdb3 to the EXT3 partition for Debian on your SDCard (The names were previously obtained from GParted).
mount /dev/sdb3 /mnt/memory # change correct device
sudo cp -pfr debdroid/* /mnt/memory/
umount /mnt/memory
debootstrap Second Stage​Now reboot into your G1, and connect it to the computer to begin the second phase of installation. Make sure USB Debugging is enabled, and your phone is recognized by ADB.
Mount the debian EXT3 partition:
adb shell
mkdir /data/mnt
mount -t ext3 /dev/block/mmcblk0p3 /data/mnt
Now your debian partition should be mounted to file system at /data/mnt
Next, we will chroot into the debian partition to start the second stage of installation. This will take about 25 minutes, so be patient and keep your phone charged.
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
chroot /data/mnt /debootstrap/debootstrap --second-stage
umount /data/mnt
rmdir /data/mnt
Set the SSH service to start on boot​We will need an SSH service running on the G1 for internet tethering from the PC. We have to install Galoula's SSH modules, and edit configuration files to start SSH on boot.
Insert the sdcard back into your Linux PC and run these commands:
(replace /dev/sdb2 with the name of your debian EXT3 partition)
(the package links will have to be updated for squeeze)
mount /dev/sdb2 /mnt
cd /mnt/tmp
wget http://www.galoula.net/fr/Tutoriels...ALOULA-001/Modules-2.6.32_GALOULA-001.tar.bz2
tar -jxvf Modules-2.6.32_GALOULA-001.tar.bz2 -C ..
echo g_ether >> ../etc/modules
echo "auto lo" >> ../etc/network/interfaces
echo "iface lo inet loopback" >> ../etc/network/interfaces
echo "auto usb0" >> ../etc/network/interfaces
echo "iface usb0 inet static" >> ../etc/network/interfaces
echo " address 192.168.0.202" >> ../etc/network/interfaces
echo " netmask 255.255.255.192" >> ../etc/network/interfaces
echo " network 192.168.100.0" >> ../etc/network/interfaces
echo " gateway 192.168.0.200" >> ../etc/network/interfaces
echo "none /sys sysfs rw,nosuid,nodev,noexec 0 0" >> ../etc/fstab
echo "none /proc proc rw,nosuid,nodev,noexec 0 0" >> ../etc/fstab
echo "udev /dev tmpfs rw,size=10240k,mode=755 0 0" >> ../etc/fstab
echo "devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0" >> ../etc/fstab
echo "HTC-Dream" > ../etc/hostname
echo "127.0.0.1 localhost HTC-Dream" > ../etc/hosts
cat /etc/resolv.conf > ../etc/resolv.conf
mkdir ../dev/pts
sync
cd
umount /mnt
Later on, we will also install the SSH packages on the phone itself.
Now insert the sdcard back into the G1, and plug the G1 into the computer.
Chroot Setup​
Make sure your Android G1 has a WiFi internet connection and USB Debugging enabled.
Set your phone to Stay Awake, so the phone will not suddenly cut off your wifi connection. Settings->Application->Development->Stay Awake
Disable WiFi sleep, which will cause download issues. Settings->Wifi->Menu Button->Advanced->Wifi Sleep Policy->Never sleep when plugged in
Enter the chroot​First, mount the Debian partition on the G1 from your PC, using these commands:
adb shell
mkdir /data/mnt
mount -t ext3 /dev/block/mmcblk0p3 /data/mnt
Then, enter the chroot:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
chroot /data/mnt /bin/bash
Set up Squeeze Package Repositories​This will install the necessary Debian repositories and some basic packages to the G1.
Type the commands below to add squeeze package repositories:
echo "deb http://ftp.debian.org/debian/ squeeze main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib" >> /etc/apt/sources.list
echo "deb http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.debian.org/debian squeeze-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian squeeze-updates main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get install bzip2 build-essential
Install SSH​Finally, we can install the openssh packages. An SSH server allows you to access a USB connected phone from your computer, so you can pump in terminal commands using copy and paste.
Type this command in the same chroot at your computer:
apt-get install openssh-server openssh-client libkrb53 openssh-blacklist libedit2 udev libvolume-id0 libkeyutils1
/etc/init.d/ssh stop
Create a Root user password and exit the Chroot​We will want to create a root user password.
passwd
Type in the password you want to use (make sure that you only use numbers and letters! special characters cannot be easily entered).
As a security measure, text will not appear onscreen, so just keep typing and press enter when you've put it in.
Exit the Chroot​We're all done, so you can exit the chroot.
sync
exit # exits the chroot
umount /mnt
rmdir /data/mnt
exit # exits `adb shell`
Boot Linux​Put the sdcard back into your G1, Plug in your G1 to the PC, and type this command to enter fastboot mode:
adb reboot bootloader
Type this command on your Linux PC to download and boot the kernel.
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Native_Debian/2.6.32_GALOULA-001/zImage
fastboot -c "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p3 rootdelay=2 fbcon=rotate:1" boot ./zImage
Your phone will now boot into Debian.
Type in the Username and Password​As a security feature, nothing will be displayed while you type your password.
username: root
password: <the password that you created>
Tether your G1's internet connection to the PC​We have to forward your PC's internet connection to your G1. Type these commands in the computer:
ifconfig usb0 192.168.0.200/26
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE
(not tested) Alternatively, use these commands: (recommended by Jorge Peñalba)
ifconfig usb0 192.168.0.200/26\
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE\
echo 1 \> /proc/sys/net/ipv4/ip\_forward\
ssh 192.168.0.202 -l root\
iptables -D POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE\
echo 0 \> /proc/sys/net/ipv4/ip\_forward
SSH into the G1​Use this command to SSH into the G1's command line, so you can send commands to it from your computer. Log into your phone with the same username and password you set before.
ssh 192.168.0.202
Enable Dual Boot (optional)​We will create a custom kernel for the phone to dual-boot between Android and Linux. This way, you will be able to hold power+home to boot Linux.
Use your computer to SSH into the G1 and run these commands:
cd /usr/src
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Outils/mkboot.tar.bz2
tar -jxvf mkboot.tar.bz2
cd mkboot
make && make install
cd /usr/src
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Outils/android-imagetools.tar.bz2
tar -jxvf android-imagetools.tar.bz2
cd android-imagetools
make && make install
cd /tmp
wget http://www.galoula.net/fr/Tutoriels/HTC-DREAM-G1/FTP/Native_Debian/2.6.32_GALOULA-001/zImage
wget http://wiki.openmoko.org/images/f/f6/Newramdisk.cpio.gz
mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p3 rootdelay=2 fbcon=rotate:1" \
--kernel zImage --ramdisk ./Newramdisk.cpio.gz -o Recovery-boot.img
cat /dev/zero > /dev/mtd1
mkdir /dev/mtd
cd /dev/ && for i in `ls -w1 mtd?`;do ln -s /dev/$i /dev/mtd/$i; done && cd - || cd -
flash_image recovery Recovery-boot.img
Normal boot will get you into Android
Holding home and power will boot into debian
Galoula's Netinstall​How to Install Ubuntu with Ubuntu-Install.img ?
Download Ubuntu-Install.img on your Linux-PC.
Turn off your HTC G1.
Turn On HTC G1 in FastBosst mode : Power on with hold the camera button, if it's OK, you can see 3 Android on Skateboards.
In this screen press Back.
Connect USB cable betweek PC and G1.
On your Linux PC type this command : "fastboot boot Ubuntu-Install.img" without quotes.
If the G1 don't start, press the back button on G1.
The G1 start the Ubuntu Installer.
Warning ! My image is set for a French G1 keymap.
The special keys are :
Up : End
Down : Back
Left : Home
Right : Call
Escape : menu (on keyboard)
Tab : Right alt with Q.
Control : Search Button
For get networking works : This kernel use USB-NET.
To configure IT :​On the Linux PC :
sudo ifconfig usb0 192.168.0.200 netmask 255.255.255.0 up
iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sysctl -w net.ipv4.ip_forward=1
On the G1 :​When the installer tell you for Networking Configuration, chose usb0
You can cancel the DHCP discover.
Type this settings :
IP Address : 192.168.0.202
NetMask : 255.255.255.0
GateWay : 192.168.0.200
DNS : Your DNS
The setup tell you because it can't download "kernel modules", chose continue, my kernel can read the SDCARD for the installation, but it can't read internal partition for more secure.
The setup can tell you a warning because the kernel can't be installed, please continue (and ignore it) because, Ubuntu-Rescue.img contain the appropriate kernel.
Actualy, the file is : boot-recovery.img
Now, you can setup your Ubuntu !
Galoula's Netinstall images
Page Index for this GitHub Wiki
Source: Github
Click to expand...
Click to collapse
Could you provide the ROM, HardSPL, and EngeneeringSPL?

Chromecast, how to run ftp, samba, httpd, symlink new busybox, usb

Some usefull comands to chromecast
You need to download the latest busybox (v1.21.1)
search for busybox binary, it's the first hit on google. Download busybox-armv71
cd /data
busybox wget <adress to file>
mv /data/busybox-arm71 /data/busybox
chmod 777 /data/busybox
always good to run /data/busybox ash first so we can use tab again =)
FTP:
/data/busybox tcpsvd -vE 0.0.0.0 21 /data/busybox ftpd / -w & > /dev/null
Samba:
mkdir /data/samba
/data/busybox mount -t cifs //<server ip>/<share> /data/samba/ -o username=<username>,password=<password>
httpd:
mkdir /data/www
echo "A:*" > /data/httpd.conf
echo "Hello World" > /data/www/index.html
chmod -R 755 /data/httpd.conf /data/www
/data/busybox httpd -p 8000 -h /data/www -c /data/httpd.conf
Symlink to new busybox commands:
mkdir /data/bin
busybox cp /data/busybox /data/busybox/bin
create the file "/data/create" with:
#!/bin/sh
for b in $(/data/bin/busybox --list); do
ln -s /data/bin/busybox "/data/bin/${b}"
done
chmod 755 /data/create
sh /data/create
Add path:
export PATH=$PATH:/data/bin
no need to run /data/busybox vi anymore =)
USB:
I have not figured this out yet. But if you connect a usb with ota cable and run
mkdir /data/usb
/data/busybox lsusb - shows a usb but there is no device file in /dev to mount.
Bus 001 Device 002: ID 090c:1000
Bus 001 Device 001: ID 1d6b:0002
Then I run:
/data/busybox makedevs -d /deb/block/sda1 /data/usb
I get this
/data# /data/busybox makedevs -d /dev/block/sda1 /data/usb/
rootdir=/data/usb/
table='/dev/block/sda1'
makedevs: invalid line 26: 'lost+found'
makedevs: invalid line 27: '▒X'
makedevs: invalid line 28: 'Ap▒N|B▒▒^
[...] and about 40 simular lines. It's a newly formated 8 gig usb (ex4) so it's only a lost+found dir on it, as it shows above.
then I run /data/busybox fdisk -lu /dev/block/sda - I get this
Disk /dev/block/sda: 8019 MB, 8019509248 bytes
246 heads, 40 sectors/track, 1591 cylinders, total 15663104 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/block/sda1 2048 15646719 7822336 83 Linux
Anyone got a clue whats wrong and how to fix this?
Have anyone found out how to autostart scripts on boot?
/mape
USB worked for me. Here's what I did:
1) Inserted USB drive (fat formated). /dev/block/sda and /dev/block/sda1 were auto created and the following lines were generated in dmesg:
Code:
<6>[ 211.880372] usb 1-1: new high-speed USB device number 2 using berlin-ehci
<6>[ 212.033411] usb 1-1: New USB device found, idVendor=13fe, idProduct=3100
<6>[ 212.033427] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[ 212.033436] usb 1-1: Product: Patriot Memory
<6>[ 212.033444] usb 1-1: Manufacturer:
<6>[ 212.033451] usb 1-1: SerialNumber: 079B09013A4D52A8
<6>[ 212.035169] scsi0 : usb-storage 1-1:1.0
<5>[ 213.055504] scsi 0:0:0:0: Direct-Access Patriot Memory PMAP PQ: 0 ANSI: 0 CCS
<5>[ 213.058011] sd 0:0:0:0: Attached scsi generic sg0 type 0
<5>[ 213.760828] sd 0:0:0:0: [sda] 15646720 512-byte logical blocks: (8.01 GB/7.46 GiB)
<5>[ 213.761302] sd 0:0:0:0: [sda] Write Protect is off
<7>[ 213.761317] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
<3>[ 213.761799] sd 0:0:0:0: [sda] No Caching mode page present
<3>[ 213.767645] sd 0:0:0:0: [sda] Assuming drive cache: write through
<3>[ 213.778932] sd 0:0:0:0: [sda] No Caching mode page present
<3>[ 213.784735] sd 0:0:0:0: [sda] Assuming drive cache: write through
<6>[ 213.811683] sda: sda1
<3>[ 213.814553] sd 0:0:0:0: [sda] No Caching mode page present
<3>[ 213.820769] sd 0:0:0:0: [sda] Assuming drive cache: write through
<5>[ 213.827234] sd 0:0:0:0: [sda] Attached SCSI removable disk
2) I was able to mount the drive with the following:
Code:
mkdir /data/mnt/
mount -t vfat /dev/block/sda1 /data/mnt/
I can't imagine that and ext4 formatted drive would prevent the block device from being created, but you can try to manually create it with:
Code:
mknod /dev/block/sda b 8 0
mknod /dev/block/sda1 b 8 1
and then try to mount. It may be worth trying a fat formatted drive if you have one.
---------- Post added at 08:57 PM ---------- Previous post was at 08:55 PM ----------
I'll toss out a useful command of my own. If you want to transfer files to and from the chromecast without enabling additional services, this can be done by pipelining data through the ssh command (since dropbear is minimized to exclude scp and sftp, this is the only way).
To send the local file tmp/bashrc to the chromecast's /data directory, run the following command:
Code:
cat tmp/bashrc | ssh [email protected] 'cat > /data/bashrc'
To download the /build.prop file from the chromecast to the local system, run the following command:
Code:
ssh [email protected] 'cat /build.prop' > build.prop
Permissions may need to be fixed on the transferred file.
Got it working, with both fat and fat32, Strange it did't work with any of the ext systems. Learnt many things, like not post late at night
Nice command there, handy to always have the abiliy to send files.
Hi all
How woud I execute the following command in [email protected] /usr/share/eureka-apps/configs/apps.conf
I am trying to locate the Team Eureka whitelist. As well what is the root password for the rom, Is it my WiFi pass phrase/password?
Regards
fs1023
fs1023 said:
Hi all
How woud I execute the following command in [email protected] /usr/share/eureka-apps/configs/apps.conf
I am trying to locate the Team Eureka whitelist. As well what is the root password for the rom, Is it my WiFi pass phrase/password?
Regards
fs1023
Click to expand...
Click to collapse
If you just want to view the file, you can establish an ssh connection to execute a single command:
Code:
ssh [email protected] cat /usr/share/eureka-apps/configs/apps.conf
Otherwise you can view the file from an already established interactive session by running:
Code:
cat /usr/share/eureka-apps/configs/apps.conf
The root password is blank as there is no passwd file. I doesn't look like google built this with user management in mind.
bobcat987 said:
If you just want to view the file, you can establish an ssh connection to execute a single command:
Code:
ssh [email protected] cat /usr/share/eureka-apps/configs/apps.conf
Otherwise you can view the file from an already established interactive session by running:
Code:
cat /usr/share/eureka-apps/configs/apps.conf
The root password is blank as there is no passwd file. I doesn't look like google built this with user management in mind.
Click to expand...
Click to collapse
Thanks for the reply bobcat987. I am struggling. Tried to ssh connection with commands you gave me but putty is asking for a password.
Can you please help once again?
Regards
fs1023
fs1023 said:
Thanks for the reply bobcat987. I am struggling. Tried to ssh connection with commands you gave me but putty is asking for a password.
Can you please help once again?
Regards
fs1023
Click to expand...
Click to collapse
Just push enter and you should be good.

Chroot. Running Debian 7.8 on Chromecast

How to install chrooted Debian 7.8 on a Chromecast (Debcast?)
English are not my native language but I will try answer any questions
Step 1 – 5 was made on a Debian 7.8 computer (raspbian)
Step 6 – 12 was made in Chromecast shell
1. Install debootstrap
Code:
su
apt-get install debootstrap
2. Download mini-installation for armhf with debootstrap, this will take a while.
Code:
debootstrap --arch=armhf --variant=minbase --foreign wheezy debian http://http.debian.net/debian
3. Tar the downloaded
Code:
tar -cvf debian.tar debian/
4. Send debian.tar to CC,data dir is writable
Code:
cat debian.tar | ssh [email protected][chromecast-ip] 'cat > /data/debian.tar'
5. ssh to chromecast
Code:
ssh [email protected](chromecast-ip)
6. Untar
Code:
cd /data
tar -xvf debian.tar
7. Create a start file for Chroot
Code:
vi /data/chroot.sh
#!/bin/sh
# Fix all PATH for Debian
export ROOT=/data/debian
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export HOME=/root
# remount /data. Got an error first time I loged into chroot. remount is a fix for this
# not sure if we need to do this every reboot
echo "Remounting /data"
mount -o remount,defaults /data
# Mount dev for Debian if needed
mountpoint $ROOT/dev –q
if [ ! $? -eq 0 ] ; then
echo "Mounting dev"
mount -o bind /dev $ROOT/dev
fi
# Mount pts for Debian if needed
# It's a fix for direct ssh login to chroot
mountpoint $ROOT/dev/pts –q
if [ ! $? -eq 0 ]; then
echo "Mounting ptst"
chroot $ROOT /bin/mount -t devpts -o OPTIONS devpts /dev/pts
fi
# Mount proc for Debian if needed
mountpoint $ROOT/proc –q
if [ ! $? -eq 0 ]; then
echo "Mounting proc"
mount -o bind /proc $ROOT/proc
fi
# Mount proc for Debian if needed
mountpoint $ROOT/sys –q
if [ ! $? -eq 0 ]; then
echo "Mounting sys"
mount -o bind /sys $ROOT/sys
fi
# start chroot
chroot $ROOT /bin/bash -l
8. run chroot.sh and continue with the installation, this will take a while
Code:
chmod +x chroot.sh
./chroot.sh
debootstrap/debootstrap --second-stage
9. We now got a working minimal chroot jail, almost no programs are installed, before we can install anything we need to update sources.list and add some repositories. Use http://debgen.simplylinux.ch/ to create a sources.list. I use debian mirrors for Sweden.
Code:
echo ”deb http://ftp.se.debian.org/debian stable main” > /etc/apt/sources.list
echo ”deb http://security.debian.org/ wheezy/updates main” >> /etc/apt/sources.list
apt-get update
10. Install vim and ssh
Code:
apt-get install vim ssh
11. change port from 22 to 2222 and restart ssh
Code:
vi /etc/ssh/sshd_config
/etc/init.d/ssh restart
12. Set a password
Code:
passwd
OPTIONAL
1. Install desctop and vnc server, this will take a while and our installation will rise with 400-450M (mine using about 800M total), we only got 1.1G total to play with so be carefull which program you install. A fix to this would be to create a Yaffs2 image for loop mount and then store it on a USB drive.
Code:
apt-get install xfce4 tightvncserver
2. Create a loginpassword to vnc, and choose if you need a guest login
Code:
tightvncserver
3. Start vnc server, 800x600 res.
Code:
vncserver :0 -geometry 800x600 -depth 24
4. Log into chromecast, I used a standalone RealVNC in windows and [chromecast-ip]:0 to login
5. More info at http://elinux.org/RPi_VNC_Server
INFO
- To exit root jail, just type exit
- If you started sshd in root jail you can connect to it with ssh on port 2222.
- No need to start chroot to load a program in chroot, you can start it from outside
Code:
chroot with chroot /data/debian /etc/init.d/ssh start
- you can also kill program from outside, run ps to find out ID and use kill [id]
- Chromecast does support loop mount, but not very many filesystems
o To mount a supported filesystem use
Code:
mount myImage.img /mnt/myImage –o loop=/dev/block/loop0
o does not support ext, ext2, ext3 or ext4
o Does support yaffs2, vfat…
o supported filetypes can be found in cat /proc/filesystems
o yaffs2utils can be compiled in debian (on CC), this program can make same filesystem type as /data, and this file can be loop mounted
o Install git, gcc and make. Then git clone https://github.com/justsoso8/yaffs2utils
Errors:
- stdin is not a tty. Run inside chroot jail:
Code:
/bin/mount -t devpts -o OPTIONS devpts /dev/pts
or outside chroot run
Code:
chroot /data/debian /bin/mount -t devpts -o OPTIONS devpts /dev/pts
. Then try to connect to port 2222 again.
- do this: mount -t proc proc /proc.
Run (outside chroot)
Code:
mount -t proc /proc /data/debian/proc
- Chroot and vi can be found in busybox (busybox chroot, busybox vi) you can create a symlink to it.
Code:
mkdir /data/bin & cd /data/bin
ln /bin/busybox –s vi
ln /bin/busybox –s chroot
export PATH=/data/bin:$PATH
o If you need Busybox it can be downloaded from: http://www.busybox.net/downloads/binaries/latest/busybox-armv7l
TODO:
- Autostart chroot on boot
- Does anyone know how to view shell via HDMI?
- Can keyboards and mouse be connected via a USB hub so we can use CC as a minimal computer?
LINKS:
http://www.hjackson.org/blog/archives/2008/10/18/ssh-stdin-is-not-a-tty
https://wiki.debian.org/ChrootOnAndroid
http://www.cyberciti.biz/faq/how-do-i-compress-a-whole-linux-or-unix-directory/
http://elinux.org/RPi_VNC_Server
http://debgen.simplylinux.ch/
https://bitbucket.org/inkubux/cubox-i/wiki/Plex Wheezy
https://help.ubuntu.com/community/BasicChroot
https://github.com/justsoso8/yaffs2utils
http://www.busybox.net/downloads/binaries/latest/busybox-armv7l
Screenshot:
g
Click for large
How are you using a mouse and keyboard, powered otg
Sent from my iPad using Tapatalk
it's a minimum installation of Debian, but I guess you can install xfce and use X-forwarding with sshd. They got it working on a transcend wifi sd-card so it can be made, not sure how fast it will run.
http://dmitry.gr/index.php?r=05.Projects&proj=15. Transcend WiFiSD
Cool
Ok, I tried X-forwarding, it's not a GUI, it's more like you run a program from a host, and "stream" it to some other computer using a client program and ssh.
Also installed xcfe-desctop and tightvncserver. No problem connecting to chromecast and run programs in vnc.
Is it possible to post a little 'how to' and some screenshots?
sure, give me a few days =)
Pietplezier said:
Is it possible to post a little 'how to' and some screenshots?
Click to expand...
Click to collapse
First post is updated with new information
Mape0661 said:
sure, give me a few days =)
Click to expand...
Click to collapse
Screenshots looks wicked!
Pietplezier said:
Screenshots looks wicked!
Click to expand...
Click to collapse
Thanks! It worked better then I thought it would, it's working like a small computer.
I have tryed to view shell over HDMI, would be fun, but I haven't got it to work yet, only crashed the chromecast.

Need help with enabling Diag port on Z3+ (E6553) with zROM v1.1

Hi all,
I have unlocked bootloader and flashed zROM v1.1 so I got root. I want to enable Diag port to connect phone to the QXDM. Here is what i know.
Most important files are /init.usbmode.sh and /init.usbmode.platform.sh:
/init.usbmode.sh:
-disables USB and writes VendorID
Code:
echo 0 > /sys/class/android_usb/android0/enable
echo ${VENDOR_ID} > /sys/class/android_usb/android0/idVendor
-it setups engineering port with /init.usbmode.platform.sh if "getprop perist.usb.eng" is set to 1
-writes PID and USB FUNCTION
Code:
echo ${PID} > /sys/class/android_usb/android0/idProduct
echo ${USB_FUNCTION} > /sys/class/android_usb/android0/functions
-enables USB
Code:
echo 1 > /sys/class/android_usb/android0/enable
/init.usbmode.platform.sh:
Code:
setup_engmode()
{
PID_PREFIX=0
SUPPORT_RMNET=1
case ${1} in
"mass_storage,adb") PID_PREFIX=6 ;;
"mtp,adb") PID_PREFIX=5 ;;
"rndis,adb")
PID_PREFIX=D
SUPPORT_RMNET=0
;;
*)
/system/bin/log -t ${TAG} -p i "No eng PID for: ${1}"
exit 1
;;
esac
PID=${PID_PREFIX}146
USB_FUNCTION=${1},serial,diag
echo diag > /sys/class/android_usb/android0/f_diag/clients
echo smd,tty > /sys/class/android_usb/android0/f_serial/transports
if [ ${SUPPORT_RMNET} -eq 1 ] ; then
USB_FUNCTION=${USB_FUNCTION},rmnet
echo qti,bam2bam_ipa > /sys/class/android_usb/android0/f_rmnet/transports
fi
echo "${PID} ${USB_FUNCTION}"
exit 0
}
set_rndis_qc()
{
(...)
}
case ${1} in
"eng_setup")
if [ $# -ne 2 ] ; then
exit 1
fi
setup_engmode ${2}
;;
"set_rndis_qc")
set_rndis_qc
exit 0
;;
esac
-returns PID and USB_FUNCTION to /init.usbmode.sh, By default phone has USB_FUNCTION set to "mtp,adb" so there should be PID=5146 and USB_FUNCTION=mtp,adb,serial,diag,rmnet
-echoes
Code:
echo diag > /sys/class/android_usb/android0/f_diag/clients
echo qti,bam2bam_ipa > /sys/class/android_usb/android0/f_rmnet/transports
The main issue is that "getprop perist.usb.eng" doesn't exist.
As you know this Android runs on SE Linux. In /property_contexts file we can find following lines:
Code:
#line 1 "vendor/semc/system/sepolicy/Bootstrap_Applications/1.0.0/usbeng/property_contexts"
persist.usb.eng u:object_r:usb_eng_prop:s0
sys.usb.diag_mode u:object_r:usb_diag_mode_prop:s0
persist.sys.usb.config u:object_r:usb_config_prop:s0
persist.service.adb.enable u:object_r:usb_adb_enable_prop:s0
Only "persist.sys.usb.config " is visible in getprop command. This custom ROM has script located in /system/su.d/permissive.sh which enables permissive mode on SE Linux:
Code:
#!/system/bin/sh
/system/bin/setenforce 0
So in theory restrictions to the file types and process domains should not operate. Correct me if I am wrong.
Also there is a file /system/bin/usbeng which should be stared as a service by /init.sony.usb.rc
Code:
#Start usbeng
service usbeng /system/bin/usbeng
user system
group system
class late_start
oneshot
But it can't be seen in services list or process list. Also "getprop init.svc.usbeng" says it is "stopped". We can find SE Linux properties of this file in /file_contexts:
Code:
#line 1 "vendor/semc/system/sepolicy/Bootstrap_Applications/1.0.0/usbeng/file_contexts"
/system/bin/usbeng u:object_r:usbeng_exec:s0
I have tried echoing mentioned lines with a script:
Code:
echo 0 > /sys/class/android_usb/android0/enable
echo diag > /sys/class/android_usb/android0/f_diag/clients
echo qti,bam2bam_ipa > /sys/class/android_usb/android0/f_rmnet/transports
echo 5146 > /sys/class/android_usb/android0/idProduct
echo mtp,adb,serial,diag,rmnet > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
But last line seems to fail and USB doesn't get enabled and reboot is needed.
Seems that SE Linux is one of main reasons that Diag port can't be enabled. In effect there is lack of "persist.usb.eng" "sys.usb.diag_mode" in "getprop" command and "usbeng" service. Here comes question to you guys. Do you have idea how to enable mentioned properties and service? I will very appreciate any help or information that will help me enabling Diag port.
Best regards,
Piotr
solution?
did you find the solution, i need the same?
same here, i'm xperia z3 user

How To Guide How to configure the WiFI in Android via script

In the current version of Android the WiFi configuration is stored in the file
/data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
e.g.
Code:
ASUS_I006D:/ # ls -lZtr /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
-rw------- 1 system system u:object_r:apex_system_server_data_file:s0 4884 2023-01-29 08:55 /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
ASUS_I006D:/ #
The file is in plain ASCII xml format so it can be processed by any executable to change text files (editor, sed, etc).
But IMHO it's better to configure the WiFi manually via GUI and then use the file WifiConfigStore.xml with that configuration for configuring the WiFi via script. Therefor I use this code in the post install script to install and configure my phone (see How to install and configure the Android OS via Script):
Spoiler: script commands to enable and configure WiFi
Bash:
#
# sample post install script for the customizing of the phone
#
# This script will be copied to the phone and executed there
#
# The script is executed by the user shell; use "su - -c <command>" to execute commands as user root
#
echo ""
echo "*** Postinstall script is running ..."
echo ""
# ... other customizations ....
#
# create the WiFi config file
#
# -rw------- 1 system system u:object_r:apex_system_server_data_file:s0 4884 2023-01-29 08:55 /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml
#
WIFI_CONFIG_FILE="/data/misc/apexdata/com.android.wifi/WifiConfigStore.xml"
WIFI_CONFIG_FILE_BACKUP="${WIFI_CONFIG_FILE}.$$.bkp"
NEW_WIFI_CONFIG_FILE="/sdcard/Download/WifiConfigStore.xml"
if [ -r "${WIFI_CONFIG_FILE}" ] ; then
echo "Creating a backup of the file \"${WIFI_CONFIG_FILE}\" in \"${WIFI_CONFIG_FILE_BACKUP}\" ...."
cp "${WIFI_CONFIG_FILE}" "${WIFI_CONFIG_FILE_BACKUP}"
fi
echo "Creating the file \"${NEW_WIFI_CONFIG_FILE}\" ..."
cat >"${NEW_WIFI_CONFIG_FILE}" <<-\EOT
*** add here the contents of the file /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml from the phone after manually configuring the WLAN
EOT
if [ $? -eq 0 ] ; then
echo "Creating the file \"${WIFI_CONFIG_FILE}\" ..."
su - -c cp "${NEW_WIFI_CONFIG_FILE}" "${WIFI_CONFIG_FILE}" && \
su - -c chmod 600 "${WIFI_CONFIG_FILE}" && \
su - -c chown system:system "${WIFI_CONFIG_FILE}" && \
su - -c chcon -v "u:object_r:apex_system_server_data_file:s0" "${WIFI_CONFIG_FILE}"
if [ $? -ne 0 ] ; then
echo "Error creating the file \"${WIFI_CONFIG_FILE}\" "
fi
else
echo "Error creating the file \"${NEW_WIFI_CONFIG_FILE}\" "
fi
# enable WiFi
#
echo "Enabling WiFi ..."
svc wifi enable
# optional: Disable mobile data connections
#
echo "Disabling mobile data ..."
svc data disable
# Now reboot the phone to activate the new WiFi config ..
#
echo "Waiting 15 seconds now before rebooting - press CTRL-C to abort ...."
i=0
while [ $i -lt 15 ] ; do
(( i = i + 1 ))
printf "."
sleep 1
done
printf "\n"
echo "Now rebooting the phone ..."
reboot
#
Notes:
Be aware the the file /data/misc/apexdata/com.android.wifi/WifiConfigStore.xml contains the passwords for all configured WLANs in plain text.
There should be a command to force Android to reread the file WifIConfigStore.xml but I don't know that.
Android can be forced to re-read the file WifIConfigStore.xml by killing the process system_server, e.g:
Bash:
pkill system_server
But that is more or less a warm reboot and I do not know what other side effects that restart triggers
There is an app to configure WiFi via adb command
https://github.com/steinwurf/adb-join-wifi
Bash:
adb shell am start -n com.steinwurf.adbjoinwifi/.MainActivity -e ssid myssid -e password mywlan_password -e password_type WPA
The app works but unfortunately it does not support enabling the setting to use the device MAC instead of the random MAC so it's not usable in my environment.
Another app to configure WiFi via adb command is available here:
https://github.com/pr4bh4sh/adb-wifi-setting-manager
Unfortunately that app also does not support enabling choosing the MAC address for the connection.
There is also a script to convert an old Android wpa_supplicant.conf file to the newer (post-Oreo) WifiConfigStore.xml file (not tested):
https://github.com/mnalis/android-wifi-upgrade
It's also possible to use the command wpa_cli to configure WiFi but be aware the wpa_cli only works if selinux is (temporary) disabled, example:
Spoiler: wpa_cli example
Code:
ASUS_I006D:/ $ su -
ASUS_I006D:/ #
ASUS_I006D:/ # setenforce 0
ASUS_I006D:/ #
ASUS_I006D:/ #
ASUS_I006D:/ # wpa_cli
wpa_cli v2.10-devel-11
Copyright (c) 2004-2019, Jouni Malinen <[email protected]> and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Using interface 'wlan0'
Interactive mode
<3>Control interface command 'BSS RANGE=ALL MASK=0x2'
<3>Control interface command 'LIST_CREDS'
<3>Control interface command 'LIST_NETWORKS'
<3>Control interface command 'STA-FIRST'
>
> list_networks
network id / ssid / bssid / flags
0 Zeilsheim any [CURRENT]
1 any [DISABLED]
<3>Control interface command 'LIST_NETWORKS'
>
> quit
ASUS_I006D:/ #
Note: Use help to get list of known commands
Test Environment
I tested the WiFi config via script described above in these Android distributions:
OmniROM 13 (Android 13)
OmniROM 12 (Android 12)
ASUS Android 12
ASUS Android 13
This method seems not to work in Android 11

Categories

Resources