Update 30 October 2016: I'm sorry for very long delay. Being a university student make my free time lower considerably. Anyway, new device tarball is released in stable and rc-proposed channel. This version mostly contains minor fixes, but more importantly, this includes fixes for some famous vulnerability, including the Quadrooter and dirty CoW vulnerabilities. Go to "System Settings" to get your update, or follow instructions below if you haven't update your phone since 9 January 2016.
I still ship experimental fixes in rc-proposed that may freeze your phone when the screen is off. If this matters to you, you may consider using stable channel for now, but that has pretty bad power consumption (but that still means about one day of light usage). Also, there is known bug about mobile network not usable on some network that affects all channels.
Oh, and for those stay on absolute bleeding edge on devel-proposed channel, I currently don't have enough time to test that. So, no release to devel-proposed just yet. Sorry!
Disclaimer
By the way, this disclaimer is actually copied from somewhere else just to protect me from being in the court, and I won't actually laugh at you if your device bricks. If your device really bricks, I will help you as much as possible.
Introduction
This is a port of Ubuntu touch to LG L90 Dual and all L90 models. (See below for tested devices.) Basic functionalities work, but there're still some rough edges all around. It's stable enough to use daily, and I personally use it on my phone every day. If you're tired of Android, you may want to give Ubuntu touch a try.
Tested device
This doesn't mean other devices aren't supported. If your device is labeled as "L90" (or can run Cyanogenmod for LG L90), you can give this a try.
What's working/not working
Screenshot
Information about device tarball and channel selection (obsolete)
How to install/upgrade
Download & Source code
Legal notice
Changelogs
Bugs and workarounds
Credits goes to
I still ship experimental fixes in rc-proposed that may freeze your phone when the screen is off. If this matters to you, you may consider using stable channel for now, but that has pretty bad power consumption (but that still means about one day of light usage). Also, there is known bug about mobile network not usable on some network that affects all channels.
Oh, and for those stay on absolute bleeding edge on devel-proposed channel, I currently don't have enough time to test that. So, no release to devel-proposed just yet. Sorry!
Disclaimer
Code:
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Introduction
This is a port of Ubuntu touch to LG L90 Dual and all L90 models. (See below for tested devices.) Basic functionalities work, but there're still some rough edges all around. It's stable enough to use daily, and I personally use it on my phone every day. If you're tired of Android, you may want to give Ubuntu touch a try.
Tested device
This doesn't mean other devices aren't supported. If your device is labeled as "L90" (or can run Cyanogenmod for LG L90), you can give this a try.
- LG L90 Dual (D410) (My device )
- LG L90 D405n (single card) (Thanks, keturidu!)
- LG Optimus L90 D415 (T-Mobile variant) (Thanks, JamesB3)
What's working/not working
Note that this is tested using rc-proposed channel.
*Do note that Wi-Fi-assisted location isn't available as
- Screen: Works
- Touch: Works
- Audio: Works
- Screen rotation: Works
- Vibration: Works
- Camera: Stil picture works for both camera. But video recording doesn't work for the front camera.
- Mobile Phone: Works for both SIM, but please see "Bugs and workarounds" below for info about 3G slot and data connection.
- Wifi: Works
- Video playback: Works
- GPS: Works.*
- Bluetooth: Works, but on/off doesn't.
it's licensed for the official devices only.
Screenshot
Information about device tarball and channel selection (obsolete)
Now, you don't have to worry about correct device tarball anymore. You just type in correct channels in the command, and the flashing software will get the correct files for you. You can find out more about Ubuntu touch channels at https://developer.ubuntu.com/en/start/ubuntu-for-devices/image-channels/. If you're in doubt, I recommend you to use stable channel.
How to install/upgrade
Installing for the first time (updated):
Upgrading your device or switch channel (updated):
The easiest way to install it is using ubuntu-device-flash. All of your personal data will be deleted. Make sure you backup everything important before install.
You have to root your device and unlock device's bootloader. This forum has a good tutorial on that.
For rooting, I recommend http://xdaforums.com/lg-l90/general/guide-root-l90-varients-updates-t2928364. If that doesn't work, try http://xdaforums.com/showthread.php?t=2732311. This guide is guaranteed to work.
For unlocking bootloader, I recommend http://xdaforums.com/lg-l90/general/guide-guide-to-unlocking-bootloader-l90-t2852917
Also, you'll need an Ubuntu (virtual) machine.
If your device has been running Lolipop, you may have to flash Kitkat-based bootstack for your device (http://xdaforums.com/lg-l90/development/bootstack-kk-l-l90-t3118632). Make sure you know exact phone model (Dxxx__).
- Follow the instruction for preparing your desktop in this link.
- Select channel (see information about selection above). Don't download device tarball. The flashing software will get it for you.
- Enable ADB for your device. I won't teach you here, but, again, this forum has a good tutorial about that.
- Plug your device into your computer. Then, put the device in fastboot mode by running the following command:
The first command will wipe the first 16 bytes of the boot partition. So, when the device reboot, it'll boot into fastboot mode as the boot partition is broken. Don't worry, it'll be flashed by Ubuntu Touch anyway.Code:adb shell su -c 'dd if=/dev/zero of=/dev/block/platform/msm_sdcc.1/by-name/boot bs=16 count=1' adb reboot
- When the device is in fastboot mode, run the following command:
There maybe some trouble flashing recovery. If that happen, re-plug the USB chord and try again. You'll see a lot of text and then purple recovery screen. At this point, the computer will push the files into your device. Don't unplug your USB chord until the device reboot again with big Ubuntu logo spinning. Wait until the device reboot into Ubuntu Touch, and, viola, Ubuntu Touch is installed!Code:sudo ubuntu-device-flash --server http://system-image.ubports.com/ touch --channel ubuntu-touch/{selected channel} --device w7 --bootstrap --wipe
If you've updated your device with new instruction at least once (since 9 January 2016) and just want to update the device tarball, just go to "System settings" on your device to get your update. But if you've never updated with the new instruction, read on.
Don't unplug your USB chord until the device reboot again with big Ubuntu logo spinning.
- Enable developer mode on the device by going to System Settings > About this phone > Developer mode. If you don't have a passcode for your device, set it now by pressing Lock security. Then, enable developer mode by pressing at the check.
- Plug your device into the computer, unlock your device (this is important) and run:
Code:ubuntu-device-flash --server http://system-image.ubports.com/ touch --channel ubports-touch/15.04/stable
Flash different (Android-based) recovery:
Ubuntu recovery can't be used to flash Android-recovery-format ZIP file. If you want to go back to Android using backed up file or ZIP file, you'll need custom Android-based recoveries, such as TWRP or CWM. You'll need raw disk image (IMG file) for this. Run the following command in terminal:
Code:adb reboot recovery # wait for recovery to appear adb push {recovery image name}.img /cache adb shell dd if=/cache/{recovery image name}.img of=/dev/block/platform/msm_sdcc.1/by-name/recovery adb reboot recovery
Download & Source code
You don't need to download device tarball manually anymore as flashing software will deals that for you. But if you want, you can download device-specific tarball using --download-only flag with ubuntu-device-flash. Be warned that you can't flash that image directly because updater in recovery image won't trust the signature.
Customization on the Android side can be found in the local manifest in this Github repository:
https://github.com/peat-psuwit/ubuntu-phone_manifest_w7
All kind of pull request is welcome on all of my repository.
Most customization on Ubuntu side can be found at
https://launchpad.net/~peat-new/+archive/ubuntu/lg-d410-custom/+packages
For those interested, this is programs that make phone call on this device works: https://github.com/peat-psuwit/pulseaudio-droid-card-parameters-setter
Legal notice
This distribution of software contains software from Android Open Source Project and CyanogenMod Project. It's under Apache license. Additionally, this distribution also contains software that is normally distributed with Android system, being under various licenses. The detail of license of those files is at /system/etc/NOTICE.html.gz after the system is installed.
This distribution of software contains part of PulseAudio. (Particularly, the modified version of droid module.) It's licensed under GPL version 2 or any later version of GPL. (it's actually distributed under LGPL 2.1+, but it's used with GPL-only libraries, making the effective license GPL. Please look at /usr/share/doc/pulseaudio-module-droid/copyright for detail). Get the patch at https://github.com/peat-psuwit/pulseaudio-droid-card-parameters-setter
This distribution of software contains timekeep, a small utility to keep track of time & date. This is Copyright (c) 2015, Sony Mobile Communications Inc, and licensed under 3-clauses BSD license. The full license can be seen at https://github.com/peat-psuwit/timekeep/blob/master/license.txt
Old legal notice:
This distribution of software contains modified version of oFono, Open Source Telephony. It's licensed under GPL version 2. You may have your source-code at https://launchpad.net/~peat-new/+archive/ubuntu/lg-d410-custom/+packages
This distribution of software contains part of GStreamer, open source multimedia framework. (Particularly, the modified version of androidmedia plugin.) It's licensed under LGPL version 2 or any later version of LGPL. You may have your source-code at https://launchpad.net/~peat-new/+archive/ubuntu/lg-d410-custom/+packages
Changelogs
Latest update: 30 October 2016
- Fix problem where pressing buttons below the screen in certain way will cause screen not to go sleep.
- Fix Quadrooter, dirty CoW, and other vulnerabilities.
- Change some aspect of build system.
- Make system use our GPS configuration instead of system's default.
Older update
16 June 2016
- Fix thumbnail generation for some video resolution.
- Revert NetworkManager workaround added in the last release as NM 1.2 is now in both rc-proposed and stable channel.
- Change method to wait for Bluetooth config at startup.
- Change grid unit size to 13px.
- (rc-proposed only) Run init.zetaw.post-boot.sh when the phone finished booting. This'll make battery consumption a lot lower but will cause the phone to lock up sometimes. That's why I release this fix to rc-proposed channel only. If you can't bare with something like this, switch to stable channel.
28 April 2016
- Add a workaround for NetworkManager, to fix Wi-Fi connectivity after mobile data is disconnected. The actual fix is preparing to land in rc-proposed soon, but until then, let's use this workaround.
8 April 2016
- Update Pulseaudio-module-droid to incorporate audio recording fix.
4 April 2016 (rc-proposed only update)
- Update Pulseaudio-module-droid
- Update configuration to run ADB in secure mode.
- Update recovery image.
11 March 2016
- Fix race condition in Bluetooth initialization code.
- Update recovery image
4 March 2016
- Enable Bluetooth in kernel and android parts.
- Update recovery image
6 February 2016
- Update pulseaudio-module-droid distributed in device tarball.
9 January 2016
- Enforce GPG verification for UBPorts system-image server.
- Reduce possibility to reboot at startup due to Wi-Fi subsystem.
3 January 2016
- Fixes in kernel and framework for camera due to changes in Ubuntu side.
- Make Wi-Fi (pseudo-)on/off works. This fix Wi-Fi not work at startup.
- Change the way to distribute Pulseaudio module.
- Fix for touchscreen not working in new revision of Ubuntu.
20 November 2015
- Split device tarball into 2 versions.
- Disable some service in Android container that crashes all the time.
26 August 2015
- Working video recording.
4 July 2015:
- Include timekeep, a small utility to keep track of time & date.
- Remove oFono and gstreamer1.0-plugins-bad, as patches are accepted upstream.
8 Jun 2015
- Working GPS.
- Update oFono.
1 Jun 2015
- Working mobile phone for both SIM slots.
- Update gstreamer1.0-hybris, oFono and droid module of PulseAudio, for supporting new Ubuntu version (wily).
6 May 2015
- Finally working video playback. Although this is not so good as I cannot make hardware rendering works yet.
- Include a modified version of gstreamer1.0-hybris package.
- Update oFono and droid module of PulseAudio.
17 April 2015
- Update Pulseaudio.
7 April 2015
- Fix Wi-Fi
- Temporary disable ubuntu-location-service. As GPS doesn't work yet, leaving that enable will make battery drain fast as it'll always try to load GPS library.
4 April 2015
- Fix mobile phone in the hackery way.
17 March 2015:
- Partially fix camera. It can take a still picture, but cannot record video.
- Fix the problem about GPG signature properly. The hack is no longer needed.
Bugs and workarounds
Note that this list is based on rc-proposed channel and stable-based device tarball.
Fixed or disappeared problem:
- At boot, the device may freezes and restarts itself.
This is due to the Wi-Fi system and I'm investigating this issue.This is due to fatal subsystem failure in the kernel. I've reduced possibility for Wi-FI subsystem (this is the most common failure), but this may still happen but at the lower rate.- If Wi-Fi list doesn't update during the day, turn Wi-Fi off and on.
- Turning Wi-Fi on and off currently doesn't work. (Note that while you can turn Wi-Fi on-off in system settings, the Wi-Fi chip will be not turned off.)
- If you're using rc-proposed channel, you may experience lockup when you're trying to wake the phone up from sleep. Currently, there's no fix yet, but if you can't live with it, use stable channel instead.
- If you're using some mobile provider, your phone will not be able to detect SIM card. The fix is being developed. (If you're curious, it's about comunication between RILD and oFono and how your SIM card is programed.)
Camera will stop working after you bring camera app from suspended state. Workaround: bring app back to suspend state and bring back again. This can be done by swiping from left edge.This seems not be the case now.Sometime, the device may seems freeze because an app is crash. This seems to be the problem in graphic subsystem. The system may becomes responsive again after seconds, but if it takes too long, just restart the phone.This seems not be the case now.Sometime (at boot or sometime after), Wi-Fi stops working. This can be noticed by having Wi-Fi network list not updated.Fixed by pseudo-on/off fix.Second One or both SIM slots may stop working at some boot. Simple rebooting should fix it. You may have to reboot multiple times.Seems to be disappear.3G slot selection doesn't work when there's only 1 SIM card. Workaround: use another SIM slot.(Fix released)Data connection will work with only 1 of the slots (the one you most recently used before flashing Ubuntu touch. Don't worry, if you can't remember you van try them both). Workaround: put the SIM card with a data plan in another SIM slot. If you happened to have only 1 SIM and the slot that data works is different from the slot with 3G capability, I recommend you to temporary borrow another SIM card from your friend so that you can change 3G slot. change 2G slot in system settings.Fix accepted and released.
Credits goes to
- Quarx2k for the initial Cyanogenmod port.
- Cyanogenmod for many components I used to simplify my build.
- Every contributor of LG L90's device tree on Cyanogenmod.
- Ubuntu for the porting guide.
- awe, ogra, abeato, rsavelti, popey, anpok, and much more people on irc.freenode.net #ubuntu-touch
- Sony for timekeep.
- mariogrips for UBPorts.
Last edited: