[Dell Venue] fcipaq:
This is a guide to install Debian Linux on your Nexus Player

NOTE: This guide is for advanced users

This is NOT VNC nor chroot nor Android X server nor anything else like that, but running Linux natively.

D I S C L A I M E R

----------------------------------------------------------------------------

Use this at your OWN RISK. Experimental software may harm you, your device and others around you. I cannot be held responsible for any damage done. You have been warned!

Installing Linux will most likely VOID YOUR WARRANTY! (If warranty still applies to a five year old device...)

P R O L O G U E

----------------------------------------------------------------------------

I have adapted the Nexus Player's kernel to meet GNU/Linux, namely Debian 10, requirements so far that it has become quite stable by now.

Since the processor is Intel x86 compliant you can run a regular distribution, receive updates, load software, etc. etc. This makes the Dell Venue virtually a desktop PC.

You can install Debian onto a USB stick and dual boot along with Android OR you may install Debian to the device's internal storage (and speed up things significantly).

H A R D W A R E S U P P O R T

----------------------------------------------------------------------------

What is NOT working:

* Suspend/standby

* Full 3D support

* Cameras

* Microphones (needs proper asound.conf)

* Likely something else

* Dell Venue 7840 users please see notes attached about sound. Be careful not to damage your speakers with high volumes.

R E Q U I R E M E N T S

----------------------------------------------------------------------------

* Dell Venue 7840 or Dell Venue 7040 (obviously) w/ unlocked bootloader

* USB OTG cable and mirco USB cable

* A USB Hub

* An empty USB stick (I suggest at least 16 GB of storage and 40 MB/s read and 20 MB/s write speed. 8 GB is the minimum requirement though.)

* Input devices (i.e. mouse, keyboard)

* Linux PC (or virtual machine)

* Basic Linux/ROM tinkering knowledge, some time and patience...

A lot of stuff has not been tested entirely, I am a little short of spare time lately, so please be patient, I am willing to help as good as I can.

Ready?! Let's go!

S T E P 1: Install the Linux boot image

----------------------------------------------------------------------------

a) Unlock your tablet's bootloader (there are guides online in case you don't know how to do that)

b) Reboot to bootloader, attach the tablet to your PC and flash the device specific Linux boot image to the boot partition.

fastboot flash boot dell_venue_7x40_linux_boot.img

Hint: This will be the only change to your tablet.

Note: You may revert the changes by flashing the stock boot image.

S T E P 2: Prepare SD card (done on the Linux PC)

----------------------------------------------------------------------------

a) Format the partition on the USB stick with the ext4 file system.

b) Manually mount the partition to e.g. /mnt

c) Download the attached root file system creator, untar it and change to that directory. (sorry had to be a tar inside a zip, XDA forum requirements)

d) Create the rootfs (need to be root):

./bbep_rootfs_creator /mnt your_username your_password

Note: The process sometimes fail, you might have to try more than once.

Note: This will take a long time. To speed things up, you may create the rootfs inside a disk image on your local hard drive and afterwards write the image to the SD card.

e) Download the system image (link: https://mega.nz/file/tK4UiDaB#yfmTgf8qg8e-WKFPfISbKabNeA2vd5cSfTiKCs5Oh2I)

f) Rename the downloaded system image file to system.img and paste it into /mnt

g) Insert the SD card into your tablet.

h) That's it, if you now boot your tablet, it will actually boot into Linux. Please see the debug output messages for hints in case you run into troubles.

Note: The kernel has become quite old. In case the file system gets corruptes, the kernel cannot recover the file system because the current EXT4 version is not entirely supported by the kernel. In that case, please remove the SD card and use another PC with a recent kernel to recover the file system by typing e2fsck -fy

P O S T I N S T A L L A T I O N A N D I S S U E S

----------------------------------------------------------------------------

a) sbin tools

I compiled some tools useful for running Linux on the tablet. Have a look at /usr/local/sbin. Those should be quite self-explainatory.

"toggle_blue_light" is a nifty little feature allowing you to turn on and off the blue pixel (makes the screen a little more easy on the eyes, also eliminates blue light hazard)

b) Keyboard and Dell Venue 7040

Dell has not released the kernel driver for the keyboard, so currently you won't be able to pair the keyboard using Linux. If you happen to own 2 units, you may boot Android on one of the machines and Linux on the other. Trigger the pairing in Android but then connect with the Linux machine. Swap keyboards afterwards. It's a mess...

c) Touchscreen orientation on Dell Venue 7840

Touchscreen orientation on the Dell Venue 7840 might be incorrect. In this case you need to trigger the script /usr/local/sbin/ts_rotate

d) Sound on Dell Venue 7840

Sound on the Dell Venue 7840 needs to be set up manually (you can automate the process with a start up script). You need to call /usr/local/sbin/bb_on_tfa9890.sh as root.

To change the volume use /usr/local/sbin/bb_set_volume.

Be careful with the volume, do not overdrive the speakers. I permanently damaged my 7840's speakers!

e) Compositing

On the tablet, Mate's window manager "Marco" is NOT hw accelerated. Compositing is slow. When watching Videos or browsing the internet, you may want to disable compositing (use mate-tweak) to increase performance.

If you need hw accelerated compositing you may use kwin-x11 but this takes up 1GB of disk space and stability is subpar...

You may reduce the resolution to full HD (still very good picture) by uncommenting the appropriate line in /usr/share/X11/xorg.conf.d/10-hwc.conf

f) Chromium

Chromium can be accelerated with X11/EGL, but buffer management does not work properly. When resizing the window you may need to restart Chromium, because the buffer allocation may fail.

Chromium does have support for WebGL. It's quite buggy.

g) Firefox

Firefox is not hw accelerated but still gives you decent performance when browsing or watching movies (tested Youtube FullHD and Netflix, works fine).

However when using WebGL, Chromium is much faster (in case it does not crash).

h) VLC media player

Video playback hw acceleration is not supported. To achieve decent performance anyways do as follows:

I) Choose Tools --> Preferences --> Video

II) As "Output" choose "X11 video output (XCB)" and for "Fullscreen Video Device" select "hwcomposer" for best performance.

i) Splashscreen

You can create your own splash screen. Just grap the appropriate raw flash file for your device (see below) and append a valid 24 bit image to the file (using your favorite hex editor). Flash afterwards:

fastboot flash splashscreen your_image.img

Q & A

----------------------------------------------------------------------------

Q: Does graphics acceleration work?

A: Well, OpenGL ES does work, however a lot of programs do depend on desktop OpenGL which is NOT supported. Graphics acceleration is achieved through libhybris which makes it possible to use Android graphics drivers in GNU/Linux. It might be very buggy. YMMV

Q: What is graphics performance like?

A: Depends. When a program supports OpenGL ES, you get decent performance (e.g. Kwin-X11 window manager, Chromium). Performance is sufficient to watch FullHD movies in Firefox or with VLC or browse the internet. Chromium supports accelerated WebGL.

Q: What is system performance like?

A: Depends. Bottle neck of system performance is the speed of the storage used. Using the internal storage gives huge speed improvements vs. an external USB storage (max ~ 30 MB/s). With internal storage simple tasks like file management, office applications etc. work fine.

S O U R C E C O D E

----------------------------------------------------------------------------

* Halium - https://github.com/halium

* Libhybris - https://github.com/NotKit/ and https://github.com/libhybris/

* Debian - https://www.debian.org/

* Kernel - https://android.googlesource.com/kernel/x86_64/+/refs/heads/android-x86_64-fugu-3.10-nougat-hwbinder , https://github.com/fcipaq/android_kernel_asus_fugu

* Lineage OS - https://github.com/lineageos

C R E D I T S

----------------------------------------------------------------------------

Special thanks goes to the Halium team, especially JBB and NotKit

And to Hybris, Debian and the LOS team

ROM OS Version: Debian 10

ROM Kernel: Linux 3.10.20

ROM Firmware Required: 5.x

Graphics drivers based On: Lineage OS 14.1

Version Information

Status: 7040 ok, 7840 untested

Created 2021-01-30

Last Updated 2021-02-25