Ubuntu Touch Port
Codename: P880
Pictures:
Picture 1
Picture 2
Picture 3
This will become the Official Ubuntu Touch thread for the LG Optimus 4x HD and I will update on this first post all links and instructions needed to flash the system on your phone. At the moment it is not advised that you install this on your device as we have problems getting it to boot! If you do try and install it your phone will need to be put into recovery and you will need to install the CyanogenMod again,
Problems/Status
* Tablet View and not Phone
* Phone has to be started from command line
* Telephone, WIFI, Sound does not work
* Sidestage makes apps rediculously small
* Gallery crashes on load
* Close terminal, screen blank.
Files (will be updated soon)
- CM Nightly Build -> Download Daily Build Here (from today)
- Ubuntu Touch -> Download Here
To see the desktop, you must type following in a terminal:
adb root
adb shell
ubuntu_chroot shell
su phablet
ubuntu-session
export `dbus-launch`
qml-phone-shell
Then you will see the progress.
Once finished this will be updated with a link to installation instructions. If there are any devs out there please let me know if you find any solutions to the problems and your name on this forum will be added to contributors below:
Contributors
- elgunvo (Website)
Link to the Android bit: https://skydrive.live.com/redir?resid=E1E4613B114AD346!136&authkey=!ABp6LXwuUSA0u3E
The other file phablet-armhf can be downloaded from cdimages.ubuntu.com
hey thanks for your job..
i hope that someone can suggest what kind of problem there's to mount system..
i'm not a developer,but i think that probably in ramdisk maybe there's a problem,can you run adb logcat command?
..
Ubuntu
Waiting for release, hope it will be good!
Did you correctly configure the fstab entries?
Thanks for all your responses.
I followed the Ubuntu Porting guide work for word.
I cant do adb logcat apart from in Recovery when I mount the system directory.
So thats all questions answered. I have an idea and will test it out in my Lunch Break which is to reflash the origanal system, unlock again and do the process again. I am hoping it will then work.
I will update you guys when I am done to tell you if it works or not.... Hope it does
I have installed the origanal rom again and re-rooted
will now install custom recovery and try and install Ubuntu Touch again
My battery is low so cant activate USB debugging yet, please bear with me
Okay, guys.
The problem lies with the custom CM that is built with the Ubuntu Porting Guide. I re-done all and it was still blank with no adb logcat/shell etc... then I uploaded just the normal CM stuff for p880 and it worked. This MUST mean I overlooked something. I will go through it again step for step soon and see what I did wrong... Maybe ill delete even the build environment and start from scratch. Thanks for your patience guys, I want this on my phone just as the next guy. I work too so this I am doing when the managers not looking
I will hopefully have more for you soon.
If any of you would like to donate for the time I am using to get this working just click on donate. if not I dont mind but you never know until you ask
Regards
Ashley Johnson
Now rebuilding... wish me luck
elgunvo said:
Now rebuilding... wish me luck
Click to expand...
Click to collapse
So i I keep my fingers crossed for you and waiting for working Ubuntu Touch for P880
plmaniek said:
So i I keep my fingers crossed for you and waiting for working Ubuntu Touch for P880
Click to expand...
Click to collapse
Watching this closely...
Update: Re-flashed CM & Ubuntu Touch.
Few issues found:
1. The phone turns itself off after LG Logo (Maybe a missing file?)
2. Ubuntu Touch installs to /data/ubuntu/filesystem.dir and should be /data/ubuntu (Built a fix for this)
I dont know whether its because I Unlocked BL & installed CWM only... maybe I also needed to flash unsecure boot? please advise?
I have also noticed that the custom mod does not install ubuntu-session, ubuntu_chroot or ubuntuappmanager
I cant access ADB on boot because the phone shuts down before its loaded and on recovery I can access shell, logcat etc but in my terminal I see:
-#:
instead of:
[email protected]#:
and ubuntu_chroot says:
/bin/sh: ubuntu_chroot permission denied.
I alson cant use:
-#: su
because it cant be found... still working on these errors tho and have already fixed the ubuntu/ directory.
If any one has already got another phone ported to Ubuntu Touch... Please get in touch!
Also: If the creator of the CM10 for LG P880 is on these forums I believe we can work together to solve these issues quicker... just a thought?!?
elgunvo said:
Update: Re-flashed CM & Ubuntu Touch.
Few issues found:
1. The phone turns itself off after LG Logo (Maybe a missing file?)
2. Ubuntu Touch installs to /data/ubuntu/filesystem.dir and should be /data/ubuntu (Built a fix for this)
I dont know whether its because I Unlocked BL & installed CWM only... maybe I also needed to flash unsecure boot? please advise?
I have also noticed that the custom mod does not install ubuntu-session, ubuntu_chroot or ubuntuappmanager
I cant access ADB on boot because the phone shuts down before its loaded and on recovery I can access shell, logcat etc but in my terminal I see:
-#:
instead of:
[email protected]#:
and ubuntu_chroot says:
/bin/sh: ubuntu_chroot permission denied.
I alson cant use:
-#: su
because it cant be found... still working on these errors tho and have already fixed the ubuntu/ directory.
If any one has already got another phone ported to Ubuntu Touch... Please get in touch!
Also: If the creator of the CM10 for LG P880 is on these forums I believe we can work together to solve these issues quicker... just a thought?!?
Click to expand...
Click to collapse
Have you been able to flash the official cm10.1 without issue? (im not sure on what unsecure boot does but i installed it and havnt had any issue with flashing). You could try kholk from here http://forum.xda-developers.com/showthread.php?t=2123602.
Wish I could be of more help, i really appreciate your work!
JoinTheRealms said:
Have you been able to flash the official cm10.1 without issue? (im not sure on what unsecure boot does but i installed it and havnt had any issue with flashing). You could try kholk from here http://forum.xda-developers.com/showthread.php?t=2123602.
Wish I could be of more help, i really appreciate your work!
Click to expand...
Click to collapse
I will check him out... This is proving to be a difficult task. Official CM 10.1 works... the NIGHTLY I install once tested and I can use it, thats why I have a feeling there is a missing file or a misconfiguration that is stopping Ubuntu from working. If I hold vol+ and vol- on boot the phone stays blank but still on and when I don't it just gets stuck in a boot loop :/ maybe vol+ and vol- stops the phone from rebooting?!? but I still cant get it to boot.
This debug info is from a folder called dontpanic which is made on startup. it may be useful, anyone who knows what its refeering to please let me know
[70:01:01 00:00:00.000] Initializing cgroup subsys cpu
[70:01:01 00:00:00.000] Linux version 3.1.10-CM+ ([email protected]) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Tue Apr 16 15:33:03 PDT 2013
[70:01:01 00:00:00.000] CPU: ARMv7 Processor [412fc099] revision 9 (ARMv7), cr=10c5387d
[70:01:01 00:00:00.000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
[70:01:01 00:00:00.000] Machine: x3
[70:01:01 00:00:00.000] Ignoring unrecognised tag 0x41000801
[70:01:01 00:00:00.000] Ignoring unrecognised tag 0x41000801
[70:01:01 00:00:00.000] Ignoring unrecognised tag 0x41000801
[70:01:01 00:00:00.000]`Ignoring unrecognised tac 0x41000801
[7p:01:01 00:00*00.000] Ignorifg unrecognisd tag 0x41000801
[70:01:01 00: 0:00.000\ Ignoring unrecognised tag 0x41000801
[70:01:01 00:00:00.000] Ignoring unrecognised tag 0x41000801
[70:01:01 00:00:00.000] Found tegra_fbmem: [email protected]
[70:01:01 00:00:00.000] Tegra reserved memory:
[70:01:01 00:00:00.000] LP0: b6005000 - b6006fff
[70:01:01 00:00:00.000] Bootloader framebuffer: ace23000 - ad52bfff
[70:01:01 00:00:00.000] Framebuffer: bee00000 - bf5fffff
[70:01:01 00:00:00.000] 2nd Framebuffer: bf600000 - bfdfffff
[70:01:01 00:00:00.000] Carveout: 00000000 - 00000000
[70:01:01 00:00:00.000] Vpr: 00000000 - 00000000
[70:01:01 00:00:00.000] Memory policy: ECC disabled,
U have to flash unsecured boot.img at first.
reas0n said:
U have to flash unsecured boot.img at first.
Click to expand...
Click to collapse
Thanks for the reply?
Which boot image are you referring too? I know the NIGHTLY CM works on my device, do you mean that boot.img? Or do you mean another? if so, can I please have the link?
CM works? So if it works, all should work..
Thats why I believe its something to do with the porting... maybe when it downloads the required files it misses some. Or when it compiles it compiles wrong?!?... no idea... I will do more tonight. I am currently working :/
I have now found the solution... hold in there guys, not long to go!
Related
Ok, so following on from the MeeGo thread, I have Ubuntu booting on the Nexus S using the same method and same kernel.
The Ubuntu image used is the HD2 Ubuntu image (v 0.3), loaded from a file on the internal memory (again, no flashing required - you can thank me later).
The touchscreen isn't yet working, but that's my kernel at fault. Will fix that with the MeeGo stuff.
If you want to try this yourself, first grab yourself a copy of Ubuntu for HD2, and take just the rootfs.ext2 file and drag it to your Nexus S (put it in a folder called 'ubuntu' - lowercase is important!).
Then use fastboot to boot the following image (or flash it to recovery partition if you're daring and know how dangerous that can be):
http://dl.dropbox.com/u/8657343/bootUbuntu.img
You will need to do one minor edit once the device is booted; you will see the screen output is very weird; ADB push the following file to /etc/X11/xorg.conf, and then reboot Ubuntu:
http://dl.dropbox.com/u/8657343/xorg.conf
If you're in any way interested, please click the thanks button! Otherwise, enjoy!
nice!
the next thing we'll need after getting the touch screen working
is to have a calling app daemon, and make sure internet works on both 3G and WiFi
nice, look same at Ubuntu Netbook Edition
What about Galaxy S?
Njcki said:
What about Galaxy S?
Click to expand...
Click to collapse
In theory the same stuff should work; I don't have a Galaxy S to test on or I'd try it. I don't know anything about the Galaxy S' bootloader, or how much the kernel would differ (I'm guessing not at all, since this is a stock Samsung kernel from the Android kernel source)
I did an article on my site http://www.android-ita.com/dev-port-di-ubuntu-sul-nexus-s/
Maybe some italian devs, will help you
Thanks for this, gonna have a play now
Why is it dangerous to flash the boot image to recovery? Isn't fastboot lower level than recovery, or have I got that wrong?
nice, thanks. trying this as soon as my wife gets off my phone.
Oh my god.. You are awesome good sir. Will give it a run when touch is up and running!
I'd love it to be run from Android....i dont want it natively, just to test it...booting for example from an android app
I would love to know if this will work on Epic 4G. I'm going to give it a shot to see what happens.
Great job
Could you give us the sources of your kernel ? Is it patched ?
Tyruiop said:
Great job
Could you give us the sources of your kernel ? Is it patched ?
Click to expand...
Click to collapse
There are no changes to the kernel at all so far. I changed the config file to enable VTs, that's it.
Ok, thank you, I'll try to build one myself
can this method be used to install android 2.3 on a phone running android 2.1,
especilly in the case when upgrading is difficult because of kernel and locked bootloader (like motorola devices) ? excuse me if it is a silly question, i'm not a coder.
would it be possible to make an app that re-boots into fastboot and runs the fastboot command. since we dont always have a comp available to run fasboot which makes this useless if your not at home, or have a laptop (in which case you dont need ubuntu on a phone)
works on Nexus One right now ?
--> ok I'm trying
It blocks on X screen of my nexus one.. before the classic bootanimation.zip
Someone have any idea about that ?
Ok, so I've got wifi working . Here is my solution. A little bit crappy but... hey... it's a start ! Also, I tried compiling the kernel with the module built in and it wont boot, and I don't know why ?
Howto get wifi :
1) Boot Ubuntu following stroughtonsmith indications
2) Download http://tyruiop.org/~tyruiop/wifi_nexuss_ubuntu.tar.bz2
3) push the vendor directory at the root. The path must remain (/vendor/firmware etc...) and the bcm4329.ko file wherever you want.
4) reboot under ubuntu
5) *optional, only if ifconfig -a doesn't show eth0* type insmod /path/to/bcm4329.ko
6) Type "ifconfig -a". An eth0 interface should appear. It's wireless. You can configure it with wpa_supplicant without a problem .
Uhm.. with Nexus One, Ubuntu blocks on X SCREEN (before the classic bootanimation).. Maybe something that I do is wrong ?
- Download HD2 Ubuntu
- mkdir ubuntu/
- put in ubuntu/ the fs on the archive I downloader
- put ubuntu/ in the SDCARD
- adb reboot bootloader
- fastboot boot bootUbuntu.img
Is it correct ?
I am trying to compile a clean AOSP ROM for my O2X, there is a few things I am having trouble with.
1. What is the significance of overriding the build prop with the following:
Code:
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=lge_star BUILD_ID=FRG83G BUILD_DISPLAY_ID=GRJ22 BUILD_FINGERPRINT=lge/lge_star/p990/p990:2.2.2/FRG83G/lgp990-V10b.2ED2ADCFFC:user/release-keys PRIVATE_BUILD_DESC="star-user 2.2.2 FRG83G 2ED2ADCFFC release-keys"
Clearly its used for something, else CM7 wouldn't be doing it.
2. When I try to boot the compiled system (using either CM or EternityProject kernel), it simply stops at the LG logo, no logcat, no dmsg, nothing and after a while it reboots. What could I be missing?
I am using the init.rc from the CM7 p990 source, do I need some extra modules for it to boot? (I have added busybox and bash)
Tips on how I could debug the issue would be appreciated (any additional logs?).
I've managed to get froyo building and running from source (I used the nvidia branch and merged 2.2.2 myself)
I just used the stock LG kernel though
Got almost everything but gave up because it was a huge pain in the ass
You dont really need those
Are you trying to create the device tree yourself?
fallout0 said:
I've managed to get froyo building and running from source (I used the nvidia branch and merged 2.2.2 myself)
I just used the stock LG kernel though
Got almost everything but gave up because it was a huge pain in the ass
You dont really need those
Are you trying to create the device tree yourself?
Click to expand...
Click to collapse
Yea I am trying to create a device tree that will make AOSP compile and run. Its compiling just fine and it uses bits from the CyanogenMod device tree. The problem is that it wont run, it gives me no logcat output at all.
Here is the p990.mk:
http://pastebin.com/SxUZZDau
The boardconfig and proprietaries are identical to CM7. (Merged star-common and p990 configs since I have no use for p999)
Try using the stock kernel + init.rc - that is just use the boot image from modaco for now
You should be able to adb shell into it and check dmesg to see what's going on
fallout0 said:
Try using the stock kernel + init.rc - that is just use the boot image from modaco for now
You should be able to adb shell into it and check dmesg to see what's going on
Click to expand...
Click to collapse
Same problem, no dmsg or logcat.
Im gonna start from scratch now
About your first question (and sb correct me if I'm wrong), its just for market stuff to show up on the device, whilst making About>System display GRJ22 etc. etc.
L10nH34Rt said:
About your first question (and sb correct me if I'm wrong), its just for market stuff to show up on the device, whilst making About>System display GRJ22 etc. etc.
Click to expand...
Click to collapse
That would make it rather useless
KernelCrap said:
Same problem, no dmsg or logcat.
Im gonna start from scratch now
Click to expand...
Click to collapse
Also you HAVE to check out the code from nvidia because the tegra2 has a bug in the CPU and their code base has a work around for it if you don't the dynamic linker doesn't work and you'll find every executable will segfault ( when you flash your system image from recovery try and go into system/bin and run. /ls for example)
In the board configuration you'll notice a HAVE_TRGRA something or rather line
check out bionic that's where that fix is applied
fallout0 said:
Also you HAVE to check out the code from nvidia because the tegra2 has a bug in the CPU and their code base has a work around for it if you don't the dynamic linker doesn't work and you'll find every executable will segfault ( when you flash your system image from recovery try and go into system/bin and run. /ls for example)
In the board configuration you'll notice a HAVE_TRGRA something or rather line
check out bionic that's where that fix is applied
Click to expand...
Click to collapse
Im gonna try to build using the 2.3.3 gingerbread-tegra source from nvidia
EDIT: Same problem, when running something i get "Segmentation fault". I am using the gingerbread-tegra source from nvidia :S
I have the following in BoardConfig.mk:
TARGET_HAVE_TEGRA_ERRATA_657451 := true
Busybox is working fine though :/
Shouldn't the source from nvidia allow me to execute the compiled binaries without giving segmentation fault?
The funny thing is that busybox is working, and I can access dmesg through busybox.
KernelCrap said:
That would make it rather useless
Click to expand...
Click to collapse
It wouldn't if you couldn't access the market now would it?
L10nH34Rt said:
It wouldn't if you couldn't access the market now would it?
Click to expand...
Click to collapse
I'd rather have it boot atm.
Still same problem even though I have moved to the gingerbread-tegra source
IMHO its a wasted effort. You'll have trouble getting camera/hdmi etc.etc to work... Just clone CM repo and cherry-pick from there.
L10nH34Rt said:
IMHO its a wasted effort. You'll have trouble getting camera/hdmi etc.etc to work... Just clone CM repo and cherry-pick from there.
Click to expand...
Click to collapse
For starters I don't care about camera or hdmi, I want a clean AOSP rom - CM is great, but it includes too many extra features for my taste.
Are you sure you checked out the tegra branch from nvidia? gingerbread-tegra?
I could only get froyo to boot myself - gingerbread would crash inside surfaceflinger with the froyo graphics libraries. I think the cygonenmod guys had access to leaked gingerbread libraries.
Hi guys, where i can find sources from nvidia ? I only found the kernel git...
Thank's
fallout0 said:
Are you sure you checked out the tegra branch from nvidia? gingerbread-tegra?
I could only get froyo to boot myself - gingerbread would crash inside surfaceflinger with the froyo graphics libraries. I think the cygonenmod guys had access to leaked gingerbread libraries.
Click to expand...
Click to collapse
I am sure and I am using the leaked libraries too. Anything else i can try?
Sent from my Optimus 2X using XDA App
If all the executables are seg faulting then you won't even get to logcat and the shell won't run unfortunately.
Try this...
find all the blocks of code in the source that have the #ifdef HAVE_TEGRA..ERRATA
and remove them
That way you'll definitely know that its compiling that section of the code. That has to work
fallout0 said:
If all the executables are seg faulting then you won't even get to logcat and the shell won't run unfortunately.
Try this...
find all the blocks of code in the source that have the #ifdef HAVE_TEGRA..ERRATA
and remove them
That way you'll definitely know that its compiling that section of the code. That has to work
Click to expand...
Click to collapse
Will try that once I get home later today
I commented it out the following places:
Code:
./bionic/libc/Android.mk:497: ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
./bionic/linker/Android.mk:46:ifeq ($(TARGET_HAVE_TEGRA_ERRATA_657451),true)
Still not booting, now the error is (from logcat):
Code:
exec '/system/bin/sh' failed: No such file or directory (2)
But /system/bin/sh does exists, with the following permissions (also tried with chmod 777):
Code:
-rwxr-xr-x 1 root shell 82840 sh
If I do adb shell when in recovery and executes the binary files, they all seg fault (except for busybox) :/
Here is my BoardConfig.mk:
http://pastebin.com/ZsmJp0v1
While the recovery we have at the moment, fruit of the hard work of xantaro, unclecracker and digitalfrost, is enough for most operations there are some things bugging me that is in our interest to fix with the ultimate aim of adding it to ROM Manager and thus get official support.
Current issues:
1. It isn't the latest version of CWM and isn't official.
2. It doesn't have USB mount working.
3. It doesn't have ADB working.
4. It doesn't support EXT4.
Now, I have tried to fix these but recoveries are a new domain for me and at a first attempt I couldn't bring some of these to work. Compiling the latest version was easy and an important first step towards official; however, all others I couldn't do it and I don't think we should talk with koush before fixing all this.
Here are my short attempts:
- For USB mount I defined on the BoardConfig the path for UMS lun0 file. The path seems to be correct and there's no other file in /platform/ as I've found out by running a ls -R. I have no idea why it's not working.
- For ADB, I made sure the persist.adb.service is set to 1 and the init.rc is starting it. This being said, I don't know what's missing. Perhaps this is of interest?
- For EXT4 support I thought it was just a matter of adding alternative FS to recovery.fstab. Seems I was wrong though.
So, does anyone want to join in and help?
This is really new territory to me and I have a quite faint idea of what I'm doing.
A few guidelines:
- Read this to get an idea.
- You'll need CM sources (repo init... repo sync...)
- The CWM recovery source is in /bootable/recovery
- Here is my device source and a patch file for some changes on recovery src *
- Run build commands (. build/envsetup.sh, lunch full_p970-eng, make -j4 recoveryimage)
* If you don't change what I did on the recovery source you won't have a key to select.
Also, I have CWM 4.x at the moment on my OB but since it does the same as the already posted 3.x I don't deem necessary to share it; but if anyone wants, I'll upload it.
I'll join the party when I come from the mini-vacations, hope there'll be some progress meanwhile!
Great
i'll try to do some help,maybe little
If anyone wants you can request a pull from my source.
Also, here's a flashing CWM 4.x. I renamed it Nova recovery for the lulz.
http://www.multiupload.com/R7WGNYTL7G
Changes on the Source to get selectbutton to work shouldn´t be necessary. Adding "BOARD_HAS_NO_SELECT_BUTTON := true" to boardconfig.mk suffices to get selectbutton to work.
EXT4 Backup and Restore worked for me after editing the fstab file.
For the ADB and USB mount problem i have no Idea what is missing. Like you said, adb daemon should get started througt the initscript.
BTW. seems like the Progressbar isn´t working on the newer Versions of CWM
xantaro said:
EXT4 Backup and Restore worked for me after editing the fstab file.
Click to expand...
Click to collapse
Could you release a new version or tell us how to do it? Thanks
To get EXT4 working in my O2X builds my /data line looks like this:
Code:
/data ext3 /dev/block/mmcblk0p9 NULL auto
xantaro said:
Changes on the Source to get selectbutton to work shouldn´t be necessary. Adding "BOARD_HAS_NO_SELECT_BUTTON := true" to boardconfig.mk suffices to get selectbutton to work.
Click to expand...
Click to collapse
I thought the flag wasn't suffice. Thanks.
Rusty! said:
To get EXT4 working in my O2X builds my /data line looks like this:
Code:
/data ext3 /dev/block/mmcblk0p9 NULL auto
Click to expand...
Click to collapse
Nice tip, I'll try.
knzo said:
While the recovery we have at the moment, fruit of the hard work of xantaro, unclecracker and digitalfrost, is enough for most operations there are some things bugging me that is in our interest to fix with the ultimate aim of adding it to ROM Manager and thus get official support.
Current issues:
1. It isn't the latest version of CWM and isn't official.
2. It doesn't have USB mount working.
3. It doesn't have ADB working.
4. It doesn't support EXT4.
Click to expand...
Click to collapse
Hey,
I know this is an old thread but still if u have not resolved the problem with ADB and USB follow these instruction:
Before we start:
My mobile is Spice Mi-410 (Qualcomm made), also known as Cherrymobile magnum, Wellcomm, Motorola triumph in different countries. So may be these tweak will not work with your device. (But you can give it a try )
I hope you know how to unpack recovery.img of your device (or boot.img if your recovery ramdisk is stored in boot.img like Xperia Arc) if not then follow this guide to unpack recovery.img and extract recovery ramdisk into a folder.
Tweak
For ADB: Open init.rc file from recovery ramdisk/initram using any editor of your choice
Put this line at the end of "on init" section
Code:
write /sys/module/g_android/parameters/product_id ####
where #### should be replaced by your device's product id.
(if you dont know what it is then connect your mobile to PC and issue "lsusb" command in ubuntu terminal, you should see something like this
Bus 001 Device 027: ID 0489:c000 Foxconn / Hon Hai
Here c000 is my devices product id and Foxconn is my device's manufacturer)
Though /sys/module/g_android is not present in our device but this worked for me.
Please note that the device id is case sensitive, so write what you see on PC
For USB: For this add following line at the end of "on boot" section in init.rc file
Code:
echo 1 > /sys/class/usb_composite/usb_mass_storage/enable
For your device first confirm the location of /sys/class/ ###### / ####/usb_mass_storage/enable
Since this location vary from device to device.
This should enable usb storage mounting from recovery.
Best of luck!!
One option for load rootfs image in native mode is necesary
enviado
I've spent some (much) time this week with trying to get ubuntu running on the optimus 2x. I have succeeded to boot and get the wifi, X11 and the touch screen sort-of working.
The ramdisk is completely replaced with a busybox executable, some symlinks to it and a shell script that mounts the necessary stuff (/dev/block/mmcblk1p2 as ext3), changes root directory and calls /sbin/init.
USING THE FOLLOWING WILL VOID ANY WARRANTY YOU MIGHT HAVE LEFT AND MIGHT ALSO BRICK YOUR PHONE!
Seriously, don't do this if you don't wish to risk the data on your phone.
I will be providing some demo images for people who don't have a build environment up and running. These images will not work particularly well, don't get your hopes up .
If you want to have a big linux installation (more than 3 GB) you can flash the images to the second partition on your external sd (obviously you have to create this yourself first). You can use the following boot image (which assumes that linux is on /dev/block/mmcblk1p2 with ext3:
https://ha.xxor.net/o2x/boot-20110813.img
I have also targzipped the modifications to the file system that were required to get stuff going here:
https://ha.xxor.net/o2x/o2x-20110813.tar.gz
This should be extracted directly to the root file system.
The kernel source code is up at https://github.com/ergoen/LG-Optimus-2x-linux-kernel
Things that have been done to get this to "work":
1. Boot partition
Apart from grabbing the busybox stuff from some nexus one boot image (I'm sorry whoever fixed it, I don't remember where I got it from ) the boot command line had to be modified a bit, changing stuff from the default usually ends up in a phone that won't boot, but I discovered that it's possible to append new arguments to the default ones. So the following have been appended:
console=tty0 root=/dev/mmcblk1p2 init=/sbin/init
The console=tty0 makes sure that you see stuff on the screen while ubuntu get's running. The last two are not necessary to boot, but ubuntu seem to like (need?) them (or at least the init=/sbin/init), since otherwise you never get to the login prompt on the screen.
2. The Ubuntu installation
To make it possible to communicate with the phone at all adbd was put into the /sbin/ folder and a symlink was created /system/ -> /. Also the "/sbin/adbd recovery &" command was added to rc.local to make it autostart.
2.1. Modules and wifi
We need the /lib/modules/2.6.32.9 directory. Most files inside that were generated using the "depmod" command, the exception is wireless.ko which was taken from android, the firmware and nvram files needed for the wifi chip to work were placed in the /lib/firmware/wl/ folder. To make the wifi module autoload with the proper firmware "wireless" was added to /etc/modules and the file /etc/modprobe.d/wireless.conf was created with the contents describing the location of the firmware and nvram.
To make the wifi autoconnect on boot the /etc/network/interfaces file was modified with the following contents:
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
(To make the wifi autoconnect to your wireless you need to run the command "wpa_passphrase networkname networkpassword > /etc/wpa_supplicant.conf using adb or chroot)
2.2. X11
Getting X up by running xinit produces a simple black screen on the phone. At first I thought the problem was that the refresh rate was set to 106 Hz, indeed changing it with xrandr and pushing a new mode got me a visible xterm on Kubuntu 11.04:
https://ha.xxor.net/o2x/xterm.jpg.
On Ubuntu 10.10 it even gave me a nice colored gdm screen:
https://ha.xxor.net/o2x/gdm.jpg
But the image I got there was static and wasn't being updated. Turns out the reason the screen was black earlier with the 106 Hz rate and the reason why the screen is now just showing an image is that the framebuffer device doesn't update the screen like it should..
By modifying the kernel source to redraw the screen every 50 ms (~20 Hz) it's possible to get a scren that works. This is an ugly hack in the tegra-fb driver though, so I'm open for suggestions on how to solve it in a better way!
2.3. Touchscreen
By default the only thing the touchscreen does is force the mouse up in the left corner, I think this is due to some multitouch thing. Some more kernel hacking (basically half-disabling multitouch) makes the touchscreen work.
Pictures:
https://ha.xxor.net/o2x/SAM_0671.jpg
https://ha.xxor.net/o2x/SAM_0672.jpg
Video:
http://vimeo.com/27662093
Thans to RaYmAn and lilstevie on #tegralinux for all their help this far!
3. Misc
(K)Ubuntu 11.04 uses a new version of libc which crashes with the current nvidia kernel (2.6.32.9) on this hardware (http://developer.nvidia.com/tegra/forum/errata-657451-tls-bit-20-cp15-c13-3), so I'm going back to Ubuntu 10.10 until someone ports a newer kernel to the Optimus 2x or this problem can be solved in another way.
edit 1: Ubuntu 10.10 with much more working X11 noted in section 2.2.1.
edit 2: X11 working even more, touchscreen works aswell!
edit 3: Landscape mode works with both X11 and the touchscreen now, getting ready for alpha 1!
Current status:
Working:
- adb (best way of controlling device currently)
- X11 (only framebuffer with hardcoded refresh rate of ~20Hz)
- landscape mode fixed! =D
- touchscreen (probably only single touch)
- wifi (only when running things from console, ubuntus network manager does not recognize it)
Not working:
- Basically everything else
Alpha 1:
EDIT: Seems that multiupload has screwed up and this link was going to some crap, anyway this is not relevant anymore
Username 'ubuntu', password 'ubuntuxda'. Don't use this if you don't know how to restore the boot partition! (Or else you won't be able to boot back into android!)
Experiments:
Tried disabling the CONFIG_TEGRA_ERRATA_657451 switch in the kernel to make newer linux versions boot. This might be a bad idea in the long run, but this far things are working better than with the switch enabled..
I tried Ubuntu via chroot method posted in other thread, but I'm a noob.. Can you please explain what is different about your ubuntu?? Does it boot without Android and doesn't need VNC stuff?
Yes, it boots instead of android when turning on the phone, but it doesn't work completely, so I mostly put it up here so that people could help test and fix/hack things.
You rock! Unfortunately I'm no dev, so can't help but hopefully others will, so we'll get a fully working linux on our phone, and maybe later even meego. Is there btw drivers for the gpu? Because hdmi, with usb host ofc, would be really useful!
Anyway, good job, really!
This looks great ergoen! I'm no dev either but I can't wait until it's available to everyone, I would love to have Ubuntu running on my O2x.
Best of luck!
gpu drivers are closed source, and the ones released by nvidia require a newer kernel (2.6.38), so thats not really possible yet.
Newer kernel will be necessary anyway though, since the crashes I'm getting seems to be due to a bug in tegra which gets worked around in 2.6.36. I'm not skilled enough to perform that port though. I will of course give it a try, but most likely I'll go for some older version of ubuntu and/or perhaps meego instead.
Håller med tidigare poster. Would be awesome with native Ubuntu and Meego on the phone... keep up the good work, can't wait to follow this development.
Sent from my Optimus 2X using XDA Premium App
ergoen said:
... I realized that it tried to run the screen at [email protected], which is hmm, wrong . So setting up a script at /etc/xprofile, which makes sure the refresh rate is 60Hz...
Click to expand...
Click to collapse
What would happen if you changed this to 72Hz instead? I saw that info when I was browsing System Information in some app. Im not a dev At. All. But tell me what you think it's probably a stupid question
Sent from my Optimus 2X using XDA Premium App
I can give it a try later, not that it would make any difference .
edit: 72 Hz also seems to work, cool, that's higher refresh rate than my computer screen...
ergoen said:
I've spent some (much) time this week with trying to get ubuntu running on the optimus 2x. I have succeeded to boot and get the wifi working, also X sort-of works (software fb). I have only slightly modified the kernel (built with CONFIG_SIGNALFD=y so that Meego wont complain in a related attempt to get that os booting). The ramdisk is completely replaced with a busybox executable, some symlinks to it and a shell script that mounts the necessary stuff (/dev/block/mmcblk1p2 as ext3), changes root directory and calls /sbin/init.
USING THE FOLLOWING WILL VOID ANY WARRANTY YOU MIGHT HAVE LEFT AND MIGHT ALSO BRICK YOUR PHONE!
Seriously, don't do this if you don't wish to risk the data on your phone.
I will not provide a complete root file system for two reasons:
1. It's pretty easy to make yourself, grab the omap3 kubuntu mobile image from the kubuntu site, or use rootstock from an ubuntu installation to build one yourself.
2. My upload sucks, and putting several hundred MB onto the interwebz would hurt me.
However, I have placed an image of my boot partition here (assumes you've got ubuntu on the second partition of the external memory card formatted with ext3):
https://ha.xxor.net/o2x/boot.img
I have also targzipeed the modifications to the file system that were required to get stuff going here:
https://ha.xxor.net/o2x/o2x.tar.gz
This should be extracted directly to the root file system you aquired earlier.
Things that have been done to get this to "work":
1. Boot partition
Apart from grabbing the busybox stuff from some nexus one boot image (I'm sorry whoever fixed it, I don't remember where I got it from ) the boot command line had to be modified a bit, changing stuff from the default usually ends up in a phone that won't boot, but I discovered that it's possible to append new arguments to the default ones. So the following have been appended:
console=tty0 root=/dev/mmcblk1p2 init=/sbin/init
The console=tty0 makes sure that you see stuff on the screen while ubuntu get's running. The last two are not necessary to boot, but ubuntu seem to like (need?) them (or at least the init=/sbin/init), since otherwise you never get to the login prompt on the screen.
2. The Ubuntu installation
To make it possible to communicate with the phone at all adbd was put into the /sbin/ folder and a symlink was created /system/ -> /. Also the "/sbin/adbdb recovery &" command was added to rc.local to make it autostart.
2.1. Modules and wifi
We need the /lib/modules/2.6.32.9 directory. Most files inside that were generated using the "depmod" command, the exception is wireless.ko which was taken from android, the firmware and nvram files needed for the wifi chip to work were placed in the /lib/firmware/wl/ folder. To make the wifi module autoload with the proper firmware "wireless" was added to /etc/modules and the file /etc/modprobe.d/wireless.conf was created with the contents describing the location of the firmware and nvram.
To make the wifi autoconnect on boot the /etc/network/interfaces file was modified with the following contents:
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
(To make the wifi autoconnect to your wireless you need to run the command "wpa_passphrase networkname networkpassword > /etc/wpa_supplicant.conf using adb or chroot)
2.2. X11
Getting X up by running xinit produces a simple black screen on the phone. After some troubleshooting and voodoo magic I realized that it tried to run the screen at [email protected], which is hmm, wrong . So setting up a script at /etc/xprofile, which makes sure the refresh rate is 60Hz, and running it after xinit gets you a xterm!!!
https://ha.xxor.net/o2x/xterm.jpg
Telling /etc/X11/xinit/xinitrc to run it makes sure that it gets set up properly by the startx script, unfortunately startx doesn't go through for me on kubuntu because of some weird error caused by a hardware problem in tegra: (http://developer.nvidia.com/tegra/forum/errata-657451-tls-bit-20-cp15-c13-3).
Unfortunately this (probably) means that either we'll have to stay with old versions of libc or get a newer kernel (2.6.36 contains fix). Old libc seems backwards, but porting a new kernel requires a bit more skill than I possess.
2.2.1. Ubuntu 10.10
Grabbed the image ubuntu-netbook-10.10-preinstalled-netbook-armel+omap.img.gz from http://cdimage.ubuntu.com/ubuntu-netbook/ports/releases/maverick/release/ . After first unpacking the tgz, then unpacking the raw disk image to partition images (with 7zip on windows) and then flashing the 1.img file to the second partition on my sdcard I managed to run a much more bug free ubuntu than before.
Ubuntu 10.10 (Maverick) uses an older version of som libraries that don't crash with the old o2x kernel.
This has lead to the following:
https://ha.xxor.net/o2x/gdm.jpg
Obviously touch screen isn't working properly (pressing it puts the pointer into the upper left corner :S) so can't get further than this currently.
3. Misc
avahi-daemon and cups seems to be crashing all the time and restarting, so removing them (apt-get purge if ubuntu/kubuntu) will make the boot much cleaner. Also I get lots of alignment trap kind of errors that shouldn't be there for different kinds of services, (due to tegra bug mentioned earlier).
edit 1: Ubuntu 10.10 with much more working X11 noted in section 2.2.1
Click to expand...
Click to collapse
Its good you got it to work.Saves me some work.I was gonna begin this project my self after the 19th when my exams end.Maybe i could help you.
ergoen said:
I can give it a try later, not that it would make any difference .
edit: 72 Hz also seems to work, cool, that's higher refresh rate than my computer screen...
Click to expand...
Click to collapse
Most computer screens usually support atleast 72hz also, it's just that it only works with d-sub, and sometimes only at a lower resolution.. It's possible to make special drivers to some screens to enable higher refresh rate through dvi also.
Anyway, it's good the screen on the phone refreshes at 72hz instead of 60 for android, but in linux I really don't see the benefit.. Doesn't hurt to have though. Btw, if we would stay on this kernel, can we use the drivers from android then? Shouldn't gpu also work? Or are the drivers limited and don't allow xorg for example? Sorry if it's stupid question, don't have that much knowledge how android works yet.
Update: X11 and touchscreen work on Ubuntu 10.10 Maverick with new kernel (just a few hacks )!
manasgirdhar: sure! Lot's of things to do new kernel is needed for anything newer than ubuntu 10.10, and even here things like sound etc (cpu scaling maybe too) don't work.
kruppin: actually i removed the xorg.conf now, the phone thinks its running at 106 Hz and it works. Unfortunately in practice it goes at more like 20 Hz because of the hack I made to enable the fbdev output in the kernel. Android doesn't use X11, so those drivers wont be of any use. (I will post the kernel modifications to github soon)
edit: kernel source up on https://github.com/ergoen/LG-Optimus-2x-linux-kernel
A List of Things working at 2nd Post would be nice.
So anybody could fast see Updates,...
Edit:
Have you tried some "cleaner" Linux like Debian?
Alpha 1 is up in the second post for anyone who wants to test it (don't ^^).
I have not tried debian no, I thought ubuntu would be the easiest to google errors and bugs for .
You are great! i was hopin' for this since I have mine. You should try to make usb(otg) work to get some devices going i will try to test it soon
That's amazing We have to test USB OTG function. If it works by default, I'll try this right now
It is possible to make a dual-boot: ubuntu and android?
I don't think usb otg works since I am basically using the android version of the kernel, I also won't be able to try since I don't have a cable... (will buy one sooner or later).
Dual boot probably works if you flash the boot.img onto the recovery partition instead of the boot partition (/dev/block/mmcblk0p7 instead of /dev/block/mmcblk0p5). I have not tried this though. That way regular booting would give android and booting while holding volume down would give ubuntu, only problem with this is that cwm will be gone and the only way to fix broken things would be to flash with nvflash.
well it is not a major deal if have cifs avail needs kernel support as well. Benee mentioned (might) some otg support, mayb u could ask.
also, you might give E17 a try, it is butter-fast, and has a touch module for keyboard (letter zooming.!..) LINK
this can be compiled on a lot of hw, and gives good response with fbdev non-accel drivers also.
and most linux apps work on it fine. ofc until we have 2d/3d accel and might try compiz/fusion as well
LINK
Great job ergoen!
I've worked on exactly the same some weeks ago but i never accomplished it. because i stuck creating a working ramdisk. Which toolchain do you use?
MfG
Can anyone tell me the default kernel command string for 3.0.8 kernel?
found it
init=/init videoout=omap24xxvout omap_vout_mod.video1_numbuffers=6 omapfb.vram=0:5M lpj=2334720 fuelgauge=g muic_state=0 console=/dev/null mem=512M vram=16M omap_vout.video1_numbuffers=6 omap_vout.vid1_static_vrfb_alloc=y androidboot.hardware=black
suleymanovemil8 said:
Can anyone tell me the default kernel command string for 3.0.8 kernel?
found it
init=/init videoout=omap24xxvout omap_vout_mod.video1_numbuffers=6 omapfb.vram=0:5M lpj=2334720 fuelgauge=g muic_state=0 console=/dev/null mem=512M vram=16M omap_vout.video1_numbuffers=6 omap_vout.vid1_static_vrfb_alloc=y androidboot.hardware=black
Click to expand...
Click to collapse
For future reference it's close to the top of dmesg.
Out of curiosity, what did you want it for?
xonar_ said:
For future reference it's close to the top of dmesg.
Out of curiosity, what did you want it for?
Click to expand...
Click to collapse
I`d like to set as root sdcard and enable framebuffer console and later try to boot linux(ubuntu or Angstrom)
suleymanovemil8 said:
I`d like to set as root sdcard and enable framebuffer console and later try to boot linux(ubuntu or Angstrom)
Click to expand...
Click to collapse
Not sure if our bootloader can handle it. You can only boot from sdcard if it fails to load U-boot or X-loader from internal flash memory (according to OMAP, Lg might've changed this).
You need a different X-loader or U-boot if you wan't to force it to boot from sd.
Not 100% sure about all this. If you get anywhere please don't keep it to yourself.
Linux's minimum requirements aren't met by our phone so it might lag seriously if you do get it working
Sent from my LG-P970
xonar_ said:
Not sure if our bootloader can handle it. You can only boot from sdcard if it fails to load U-boot or X-loader from internal flash memory (according to OMAP, Lg might've changed this).
You need a different X-loader or U-boot if you wan't to force it to boot from sd.
Not 100% sure about all this. If you get anywhere please don't keep it to yourself.
Linux's minimum requirements aren't met by our phone so it might lag seriously if you do get it working
Sent from my LG-P970
Click to expand...
Click to collapse
There is some options for console in -> Device Drivers-> Graphics support-> Console display driver support-> Framebuffer Console support
but if i enable it phone stuks at lg logo and nothing....
I need this