Nexus 7 LTE General Bugs/Problems & Workarounds
-
Nexus 7 LTE General Issues, Fixes and Workarounds
HUGE UPDATE, Please see the issue list for update
Why?
Because I have recently picked up a 'deb' and after using the Nexus 7 WiFi (flo) I was expecting a very similar experience, seeing as they're effectively the exact same device with a cellular modem and a sim slot added (all the way down to the baseband and bootloader, the deb uses Flo images and is even just an add-on to the flo device tree when compiling Android).
Unfortunately, that was not meant to be, immediately after installing ubPorts, I noticed the following issues and set out to either workaround them or fix them. It's been a very long process and I am a newbie to compiling an Android system image (i've done many a kernel, and application, but never the full Android), so progress is slow. This post will serve as a chronicle of the issues found, and any applicable fixes.
Issues:
1. Bluetooth doesn't function on the 'deb' image
UPDATE: This is indeed caused by the kernel image in use.
This issue is caused by two things, the kernel image that's shipped with the 'deb' installation, and a missing upstart unit in/etc/init
for our device. This is easily fixed by compiling a kernel (or using a pre-built kernel) image for the 'flo' (Nexus 7 WiFi). Doing so actually appears to improve the stability and functionality of the device as a nice addition.4. Camera is completely non-functional
UPDATE: I have finally been able to get logs, I'll upload them when I get a chance!
When I say non-functional, I mean anything that even requests access to the Camera crashes. I created a Nextcloud webapp on my device and it would only open if I deselected the Camera permission. This issue is the most perplexing out of all of these, second only to the external pointer rotation issue, as there are absolutely NO logs generated regarding the camera, or any application that attempts to access it.
5. Device does not power down or otherwise appear to reboot.
[NOTE]: I have invalidated this issue as it appears there are some slight minute differences between the Flo and Deb defconfigs that aren't represented in the current kernel trees, as building with the kernel configuration found in the ubPorts deb image's android rootfs yielded a kernel in which auto-rotation, slimport and reboot/power-down appear to function properly.
Observations
- Both me and @doniks feel that it's extremely bizarre that the Flo runs perfectly, but it's sister device the Deb (LTE) runs so poorly. As they're the exact same device and system image with an added RIL, it should run exactly the same right?!
- [4/27/2021]: so there are some differences between the Flo and Deb in terms of kernel configuration, I am still attempting to figure out what the difference exactly is though. For now I have patched my own deb/flo configs with the config that I found, and things are working almost as great as on the Flo (no camera though )
Now, onto the fixes and good stuff!
Kernel Modifications
NOTE: Please note that you can use this kernel image in both a Flo and a Deb, however it may not boot on the Flo due to initramfs differences. If you install the kernel image on a Flo, I recommend extracting the kernel itself using abootimg and using the initramfs you already have.
What works
- Bluetooth
- WiFi
- Mobile Connectivity (I do not have a SIM to test voice with, only data)
- Auto-Rotation
- Anbox (needs some extra work to get networking working properly on each reboot at this stage though)
What's been added
- Anbox backported drivers
- zRAM Kernel Module for creating a compressed swap space (this requires some extra effort to enable at this time)
- Linux 4.2 Backports repository (Bluetooth Driver, Anbox)
Download
Download Link: https://1drv.ms/u/s!AqACoL07fxpWp8gGGF_GTmO8f-tCKw?e=xe4VUt
Kernel Source Tree: https://tonoxisisle.services/git/TononixOS/ubports_kernel_google_msm
(don't mind the repository convention, I was working on making my own personal distribution using ubPorts as a base)
Please pardon my git mess, more android repositories will appear as I attempt to work through these device trees and the compilation process.Information
This kernel is a fork of ameyagokhale's lovely Anbox enabled kernel source tree and contains a couple extra additions:
-
Working zRAM module. In my own experience, zRAM has helped make the system more reliable as I have experienced less application crashing due to low memory than previously. It also removes some strain on our NAND chips by moving swap into a compressed space in RAM instead of a swapfile on the data partition. As our device does not use zRAM under Android, this driver remains uninitialized at startup. You can either create an upstart unit to set up zRAM which then triggers the
zram-touch
unit, or you can do the following in a terminal:sudo zramctl -s <size>
[Personally, I use 2G as the size]sudo start zram-touch
which sets up ubPorts to use zRAM as it's swap, and dumps the SWAP.img image in /userdata, saving our NAND some write cycles.
-
OverlayFS v13, this module is disabled and not compiled into my kernel images by default, if you want to play with this module, compile it yourself. I had originally pulled it in to provide rootfs overlay support for Anbox (allowing the installation of Google Apps and other System utilities), however Anbox crashed when creating the overlay. I find this extremely odd as I could create the same overlay by hand as root.
-
Obviously Anbox support! YES! We have Anbox support now (courtesy of ameyagokhale)! To use it, install the kernel image and then open terminal, then run the following commands:
anbox-tool install
anbox-tool enable
Anbox should start running and you should start seeing Android applications in the app drawer. Do note that applications do not rotate their orientation and thus must be used in their portrait orientation (as I understand it from reading issue tickets and the like, that is currently a limitation on the Mir port of Anbox that ubPorts is using). This is all very experimental.
FAQ and Notes
-
Anbox support on the Flo/Deb is still very experimental, you may run into the following:
- Applications do not rotate, and appear stretched and distorted when forced
- No networking on startup, this is due to anbox-bridge failing to create the bridge and enable it via iptables inside the container.
- Sometimes the container just plain out refuses to start.
-
We have Anbox which uses LXC, does this mean we can use the LXC-type Libertine Containers?
No. For whatever reason, despite running Anbox's LXC container, and the Halium Android LXC container, Libertine runs into a namespace issue while creating it's container. Unfortunately, we are still very much a chroot-only device for the sake of Libertine.
-
I've downloaded your TonoKernel before for ubPorts 15.04, where are all the extra features like DoubleTap2Wake?
I opted to leave those out of this kernel tree, as I'm working to stabilize and improve the device support as much as possible, I'd prefer to keep extra features out of it while that work progresses. I have given thought to re-introducing those features in the future as a separate download, but I hope to eventually get this modified kernel adopted by ubPorts for the deb as it fixes a couple issues (mainly bluetooth).
Wanna Help?
I'm not so great with the actual Android development side of things, it would be an immense help to try to get a Halium 7.1 system image (that boots into ubPorts mind you) made for the Deb/Flo devices. My efforts keep ending up with a broken system that refuses to boot.
Lastly! Keep an eye on this post, I will be updating it as I continue my research and development!
Changelog:
4/24/2021: Reformatted entire post to clean up the issue list and observations. As well as provide a clear structure for keeping this information on track.
4/27/2021: Removed kernel download link, it's getting replaced here in a couple hours.Current Status
4/24/2021: Attempting to build Halium-7.1 based system image for the Flo as research, my Deb image refused to boot the container. I'm curious if the Flo image will fare the same.
4/25/2021: Installed a easily compiled deb image, Halium got to starting the init process and then... nothing, no screen change, no logs, just nothing.
4/27/2021: I didn't even NEED to recompile Android, I just needed a good kernel configuration file for the deb. Turns out the flo_defconfig is missing some options, merging/system/boot/config-3.4.0-4-flo
with my normal defconfig file has yielded a kernel with a vastly superior experience to the previous one in use (either by ubPorts installer or my own link here). I am recompiling the kernel using the new kernel configuration and it should be available soon after I test it.
4/27/2021: Kernel problem fixed! Bluetooth works, Auto-rotation works, Slimport works properly! Updated post with new download link and removed old invalid issues. - Both me and @doniks feel that it's extremely bizarre that the Flo runs perfectly, but it's sister device the Deb (LTE) runs so poorly. As they're the exact same device and system image with an added RIL, it should run exactly the same right?!
-
@tonoxis said in Nexus 7 LTE General Bugs/Problems:
In the unity8 logs, I am seeing "Invalid EDID Structure Size" appearing
do you see the same on flo?
-
@doniks I don't believe I did. The Flo worked flawlessly with Slimport, had the right screen resolution and all. They're using the same kernel, so the Slimport driver (drivers/misc/anx7808) shouldn't be the issue either.
-
@tonoxis Sorry I cannot help with the external display. We are not configuring this somewhere I thin kbut just take the defaults from the driver. But other people might know better....
-
@flohack cool, thanks for the reply anyway though!.I'm trying to recompile the Android system image as Halium-7.1 but my system.img is too small, so I'm waiting on it to transfer to my PC for resizing.
Hopefully my current list, observations and efforts eventually provide some help for us to bring the Deb up to par with Flo.
-
Adding notes on my experiences here. I flashed the dev branch on my deb yesterday. Grabbed the boot image from here today and did:
# fastboot flash boot ./boot.img
Rebooted and working on setup steps here:
# sudo zramctl -s 2G
zramctl: no divice specified
# sudo zramctl --find -s 2G
/dev/zram0
# sudo start zram-touch
zram-touch stop/waiting
# anbox-tool installThis downloads a package, and then hangs. When I ctrl-c if after a while, the tracebach indicates it's in the waitForAnbox function, at time.sleep(1).
If I do anbox-tool disable, and then anbox-tool enable, it says 'start: Job failed to start' and hangs like before.
I'm going to have to try and get an external keyboard working so I can look for logs or something to see what's happening.
Thanks for all the work so far on flo and deb!
-
@a8ksh4 By chance are you using any Slimport cables? I'd like to have someone test that Slimport is still functioning in the current Dev branch as it had stopped after an update for me despite using the same kernel, which had more or less fixed Slimport previously after switching over to using the Flo kernel config instead of the Deb kernel config.
As for Anbox, that's definitely not typical, I wonder if something has changed in how it's supposed to be installed since I wrote those instructions. As I was able to install it, but have a hard time getting it running consistently.
One problem I noticed is that there seems to be a lack of firewall rules that are added, where the script anbox-bridge is supposed to handle them. It doesn't seem to function right on our devices and if you make the anbox-bridge script return true, it should get you past "Job failed to start". There's an old Anbox issue ticket that applies here: https://github.com/anbox/anbox/issues/443 and is linked to the ubports Anbox ticket: https://github.com/ubports/anbox/issues/42 both are applicable because even if Anbox starts properly, the firewall isn't initialized properly and thus anbox has no internet functionality.
-
is there a video tutorial to switch to flo? thanks in advance.
long live the free world -
@joao-0 There is not, I do not put out video tutorials. If you really want to run the Flo software, run the UBports installer and then follow the instructions for if your device wasn't detected and select the Flo. Of course, this means you'll lose LTE connectivity as the Flo image does not support it, for that, you need to Frankenstein the device with a Deb image and Flo kernel.
Because of how sensitive that proceedure is, I advise against YouTube tutorials due to many possibilities, however I'll use the most prominent one from another homebrew scene as my reason why I do not do videos, over in the Nintendo3DS homebrew scene, a dude bricked people's consoles because he uploaded a "One Size Fits All" package with a video, containing device specific files that wouldn't work when put into another console.
If you want a decent Deb experience, download the boot.img in my OP, fastboot up TWRP, and then install the boot.img into the boot partition using it. Reboot. Done.
If you are wanting to use this kernel with a Flo product, simply do the same things. Both Nexus 7 models use the same kernel anyway.
-
@tonoxis
Thank you for your reply.
I'm going to stay like this and forget the Bluetooth. I already tested flo by installer and it didn't work. Without video to test your img, it's too complicated...
Thanks anyway.Merci pour votre réponse.
Je vais rester comme ça et oublier le Bluetooth. J'ai déjà testé flo par l'installateur et cela n'a pas fonctionné. Sans vidéo pour tester votre img, c'est trop compliqué...
Merci quand même. -
@joao-0 Ah, if you've already done the Flo installation, then open a terminal and do
sudo start bluetooth-touch-flo
If you want this working on every boot:
sudo mount -o remount,rw /
sudo cp /etc/init/bluetooth-touch-flo.conf /etc/init/bluetooth-touch-deb.conf
This is because despite running a Flo kernel, the hardware still reports it's a deb, and the ubPorts image appears to be missing the upstart item for the deb, and is missing a redirect from bluetooth-touch to just use the flo version regardless.
-
@tonoxis
sorry I do not speak english.
UBPORTS_Software_ refuses_FLO_on my nexus 7.
Thanks anyway -
@joao-0
Use this website to translate : https://www.deepl.com/translator -
@keneda
hi
_translation_approximate_Thank you -
@joao-0
I don't use android anymore to avoid google, why the hell i would use google translate ?Plus translation with deepl was accurate every time i tested it.
-
@keneda
ok.
no worry. -
@joao-0 Apologies, wish I had a better way of helping you install it. If you've got my boot.img, and have TWRP on your device, you could always flash it that way.
Or you can boot to Fastboot/bootloader, and issue a
fastboot boot <path/to/boot.img>
for temporary testing,
or
fastboot flash boot <path/to/boot.img
for permanent installation
from a computer -
@tonoxis
A big thank you I managed to make the Bluetooth work with your boot.img
Long live the free world -
@tonoxis if you have any changes in your boot image that improve the device´s experience, please try to work with us in getting them into our default image. That could be nice!
thanks -
@flohack
yes no problem, how can I help?