compiler help. running out of memory - Android Q&A, Help & Troubleshooting

hi there
im trying to compile AOSP systemimage for android 7.1.2 r4 and i seem to have worked the first compilation errors due to flex being out of date and not maintained in the repo.
But now jack is destroying my memory. i read that nougat could be compiled with 4gb ram and im sure you can but how.
some of the things i have done....
export jack arguments
export java heap options
made a huge swapfile
using ccache
the build gets to 40% before the memory starts hemhoraging. I persistantly perform the jack tricks and hit make again but it will only go 20 more compilation counters before stopping again and theres no way i can keep that up.
short of buying and replacing the ddr ram in my laptop is there any thing else i can do?

I was able to finally figure out how to use mma and i am currently building the system.img one apk x library x binutil at a time. I also changed my device mk so it could make sparse images and made snod after compiling system/extra/ext4_utils. Its really time consuming and resetting jack rarely works but restarting the pc seems to get it farther. Of course this is only a problem when compiliing apks. My phone doesnt seem to have the same problem compiling apks when i can get the ide to do it. I have been trying to compile apks on android studio for a year and cant get past the java lang class not found error. I have it pointed to the right place and ive followed every forum fix i can find but no go

Can someone help me with adding a tunable extra partition. well maybe not tunable but static. i want to be able to mount and unmount a second partition on an sd card that could vary in size.
i have tried doing this with my fstab.cv1 in m6 boot.img but no go. i get boot loop or stuck on logo screen. Even messing around with init.rc screwed me up

Related

Ubuntu 11.10 on tegra2 device: Toshiba AC100

https://wiki.ubuntu.com/ARM/TEGRA/AC100
"Adobe Flash
Dropping this library into ~/.mozilla/plugins allows flash playback. It warns though that it is out of date. http://kotelett.no/ac100/phh/Android2.2/libflashplayer.so"
Sounds great! =)
I did put this new Ubuntu Image on my AC100, however some things don't work:
* ppa ac100 produces error 404, package ac100-settings isn't found
* high background load, virtually unusable
* no shortcuts (old Imgae did support)
* no suspend (crashes), no sound yet
* did not get flash to work with above plugin
Anyone ha dmore success?
The flash plugin (even only playback) of this Ubuntu doesn't work for my Linux
Ubuntu 11.10 x Folio100?
Hi,
On http://cdimage.ubuntu.com/releases/oneiric/beta-2/ there is a "Preinstalled desktop filesystem archive" for Toshiba AC100. Is it possible to use drivers used in http://forum.xda-developers.com/showthread.php?t=907960 to prepare a version for Folio 100?
Thanks.
semonma said:
The flash plugin (even only playback) of this Ubuntu doesn't work for my Linux
Click to expand...
Click to collapse
I found a solution, now I have flash in Chromium. Doesn't work in Firefox (probably because I am running Version 7).
Instructions:
put the libflashplayer.so in the Chromium plugin directory (/usr/lib/chromium-browser/plugins), easiest way is by wget command:
sudo wget -O /usr/lib/chromium-browser/plugins/libflashplayer.so http://kotelett.no/ac100/phh/Android2.2/libflashplayer.so
install nvidea-tegra package
as it is not in the Oneiric repository yet I pulled this .deb and installed it via gdebi:
http://ppa.launchpad.net/ac100/ppa/...dia-tegra_12-0ubuntu1~alpha1monson6_armel.deb
I have no idea whether this is correct or latest, but it works to some extend.
Run chromium with
chromium-browser --allow-outdated-plugins
otherwise you get warning
360p Youtube runs smooth but when fullscreen has some slight lags, above resolutions do stutter.
Edit:
Here are some .deb packages of the main developer that seem to be newer. Did not test that. See the Readme: http://people.debian.org/~jak/ac100/README
Edit2:
With Beta 2 image and newest kernel (2.6.38-1000-ac100) the AC100 got quite usable now, sound via headphone works and performance bugs are largely reduced. Still some deadlocks by mmcd. Switching from ext4 to nilfs2 might yield some performance gain? And Debian hf, utilizing the Tegra FPU, also sounds promising.
Thank's a lot pibach, I'll try it this night =)
Brief update:
I added the developer ppa in sources list:
deb http://people.debian.org/~jak/ac100/ unreleased main non-free
and installed the package: xserver-xorg-video-tegra
it pulls in the package tegra-libraries
However I don't see any difference in video performace
nvidia-tegra package is not in there, package is stil unchanged
sudo apt-show-versions nvidia-tegra
nvidia-tegra 12-0ubuntu1~alpha1monson6 installed: No available version in archive
It is from this ppa: https://launchpad.net/~ac100/+archive/ppa
Seemingly this is for natty, does not seamlessly work with oneiric (Error 404 when added to sources.list as ):
"Changelog
nvidia-graphics-drivers-tegra (12-0ubuntu1~alpha1monson6) natty; urgency=low
* sigh, and build for the right release, oneiric doesnt work yet ...
-- Oliver Grawert <email address hidden> Tue, 05 Jul 2011 17:55:42 +0200"
However, it does work. Strange.
When I remove that nvidia-tegra package, I get some screen artefacts. Video then plays but very slow
Moreover, I can't find any xorg.conf file to set bit depth to 16 as mentioned in the Unbuntu Wiki.
So any chance to get better video (>360p) and maybe some HTML rendering boost?
Another hint: I got problems with Unity, Dash, Software Center bugging the CPU into performance problems, seems to be some memory lock with mmcd. Chromium 13 is also a lot faster, especially scrolling speed, than firefox 7 (both on smooth scrolling). But also runs into memory / CPU overload. Switching to lubuntu made all much snappier. It requires just 1 command:
sudo apt-get install lubuntu-desktop
and reboot into that one.
Maximus serves to undecorate the maximized windows -> more screen space
pibach said:
Moreover, I can't find any xorg.conf file to set bit depth to 16 as mentioned in the Unbuntu Wiki.
Click to expand...
Click to collapse
Thats probably because linux uses udev and dbus these days to detect your hardware on the fly when you start x.
Sent from my Folio 100 using xda premium
shidima_101 said:
Thats probably because linux uses udev and dbus these days to detect your hardware on the fly when you start x.
Click to expand...
Click to collapse
Yes, you're right. But that how it is described in the official ubuntu Wikipage. Strange. I have no glue how to do that nvidia tegra configuration.
When I launch Chromium-browser from terminal I get a lot of these errors:
ERROR:gl_surface_glx.cc(121)] glxQueryVersion failed
ERROR:gl_surface_linux.cc(73)] GLSurfaceGLX::InitializeOneOff failed.
So seemingly GLX Tegra hardware acceleration is not right.
BTW, the people at Arch Linux have more recent kernel and are on the status that suspend is working fine. Plus zram support there to come. See this thread. Don't know to what extend this will make the device snappier. Mine runs already quite snappy under LXDE.
I think with Linux on it the AC100 it is currently one of the best devices around. And you can get it quite cheap.
Edit:
On boot I usually get the error: unity support test closed unexpectedly
Probably something with GLX
Tegra shouldn't have any problems running Unity or Compiz.
Anybody got this to work propperly?
Edit2:
Launching Chromium in terminal:
chromium-browser --allow-outdated-plugins --use-gl=egl --ignore-gpu-blacklist
I get:
libEGL warning: GLX/DRI2 is not supported
To give you a brief status update:
I got suspend/resume to work
Flash works now in Firefox 7.0.1 (was already working in Chrome)
There seem to be a lot of work put into Ubuntu Oneiric and it's ARM version currently and it seems to be quite stable now.
On Folio100?
Is it usable on Folio 100?
The difference is only thouchscreen and Linux was already working (http://forum.xda-developers.com/showthread.php?t=907960).
Thanks.
gipposat said:
Is it usable on Folio 100?
The difference is only thouchscreen and Linux was already working (http://forum.xda-developers.com/showthread.php?t=907960).
Thanks.
Click to expand...
Click to collapse
but also Sound, Keyboard, NvEc, USB all might be slightly different. Isn't it?
pibach said:
but also Sound, Keyboard, NvEc, USB all might be slightly different. Isn't it?
Click to expand...
Click to collapse
No, I think everything is the same.
Bye
So, has anyone already tried it on Folio?
OK, I've given it a try and the boot image doesn't work, it definitely needs some porting.
hello pibach, thank you for your time testing stuff so we can make it work at the first time.
i installed drivers to make it work with flash, and its nice but sometimes i get a bug (probably due to graphic drivers making the screen get alot of artifacts, and only solution is a reboot, still a proble,m, probably due to alpha stage driver (nvidia could put something out that works decently....)
also, you say this version uses ext4? that should get it a lower performance comparing to nilfs (which i was using with phh's version) maybe disabling the journal? dont really know, will look into it.
how about changing the governor to performance instead of demand?
also...what about an SD card install? with a class 10 card should be fast? any info? worth buying a card to do it?
@Oinquer:
a) I got artifacts too, but only on Unity. I am on LXDE now and that works fine. Don't know why though.
b) I think you can choose ext4 or nilfs2 as you like. Can you point me to some links regarding performance comparisons and some more background info? I would give it a try then.
c) governor can be changed, sure.
d) the android bootloader cannot load from SD. But there might be some solution to do so, don't know. Meanwhile it should be no problem to have dual boot from internal MMC, for example Linux from partition 6 and android from partition 5 (SOS).
hello,
back to you, im using lxde now and installing the driver, hope artifacts go away.
EXT4 as far as i know has some benefits and some disavantages over ext3 and some other filesystems (checked yesterday after post), so performance might not change enough to notice.
governor , did it yesterday to performance, have to check flash playback now, but im not seeing big change except in boot time, that seems a few seconds less.
SD card, last version from phh's could be installed in SD card...and ubuntu wiki from AC100 says that if theres a blank SD card in slot at installation it will ask if you want to install there...im pretty sure its possible, but my sd card is in the trash bin, and cant buy one now...
here im hoping for the FPU stuff for the ac100...its getting there!!! quite usable, theres also a fix to have sound from internal speakers in ac100DOTgrandouDOTnet
will try it after i got everything sorted.
thank you for taking your time.
Sound is working in Ubuntu Oneiric Kernel that is in the proposed repository, works for me, but sound does not wake up after suspend yet.
SD card/USB boot does not work with Androib bootloader that is also used for Ubuntu Oneiric standard install. So you need to find one that can support that. Ccurrently there isn't any solution for that around, AFAIK. But you can put Linux on partition 6 and Android on Partition 5 and uses Android 2.1 bootloader.

[DEV TUT] Building Kernels and Android Sources

Dear Community,
Please read the following before starting on reading on.After lots of requests I decided its time to provide every oncoming developer with a short guide on how to start developing for our beloved Mimmi (most stuff applies also for Robyn or other Android devices).
I'd also like to get a few words passed on what actually in most cases developing is, so let's start with the basics:
There is different ways of developing there is people like Cyanogen Mod which provide you with a bunch of changes to the original Android source code which enables new features, adds hardware support or make things easier for specific device developers. However these people at Cyanogen are often not fully recognized so please make sure to thank these people as well. Besides that there are ports of similiar devices which will not be explained in this tutorial but also these developers usually put a lot of effort into their roms however since the source is already compiled changes are usually of a cosmetic nature. In this tutorial however you will find the basics on how to compile kernel or android from source in order to build your own changes into your own rom, which btw would have never been possible without the developers porting xrecovery or cwm to our devices so please give these people a big thumbs up as well after reading on.
What do I need/Environment set up
Most people have issues on setting up a the heart of your Developer Carreer, the Environment. What I strongly advise is to have at least a bit knowledge of the main usuage of Linux Distributions and also programming languages. Without these you will most likely fail at one stage or another to make a successful build.
So lets evaluate what you need :
Linux Distro (i.e. any Ubuntu should do well)
a VM or native Linux
quite a bit of Linux skills and programing skills
Time and a high tolerance of frustration
Sufficent RAM (at least 4 GB, more is advised otherwise use native Linux)
If you know how to install a native Linux Distribution you can probably skip this part, I will explain how to use a VM to fill the basic needs and keep your development area seperated from you most likely otherwise needed productive platform.
The following Steps are just keywords, if you want to develop you will need to inform yourself how to achieve all this yourself, there's lots of tutorials out there.
Step 1: Download a VM and a Linux Distro
Step 2: Install VM Software (i.e. VirtualBox or VMWare Server)
Step 3: Install the Linux Distro in VM (you'll need at least 6 GB Swap and 50 GB or More HD space to have enough room for experiments/seperate syncs/etc...)
Step 4: Figure out if you installed 32 Bit or 64 Bit (you'll need this later)
Step 5: Boot your new VM based Linux Distro
Step 6: Set up a Share Mount between your host and your VM
Step 7: download the Android Source/Cyanogen Source of your desire (i.e. : repo http://**** -b gingerbread) into a folder for you desire (the folder should represent your ROM's/Kernel name)
Building a Kernel
Building a Kernel is one of the easier parts considering the full source code is available for download. Sony Erricson Open Source Dev Website is providing fully funtional Kernel sources usually in the tar.gz format. Download the source code and extract it, or if you use a git based repository clone or checkout the project into a folder of your desire.
The next step, is not mandatory but advised to sync the entire Android repo/CyanogenRepo as the repo also provides the Cross Compiler toolchain which is needed to compile for your device.
Once everything is finished downloading you should check the following path in the Android repo : platform/linux-x86(orx64)/prebuilt/toolchain/arm-eabi-4.4.3/bin/ this is the cross compiler we will use to build the kernel itself, its vital to have the compiler present, the version number maybe different though.
Lets start with the building process itself:
Code:
cd kernelfolder
cp arch/arm/configs/semc_mimmi_defconfig .config (the command maybe change to copy another default config file, it creates a file in the root of the kernel folder called ".config"
ARCH=arm make menuconfig (this will bring up the kernel configuration menu for arm devices)
In the Menu Config you can change/add features to the Kernel once you are done safe the kernel config. Now your Kernel is ready to be compiled:
Code:
ARCH=arm CROSS_COMPILE=/pathtoandroid_source/platform/linux-x86(x64)/prebuilt/toolchain/arm-eabi-4.4.3/bin/arm-eabi- make -j4
This will start a compile with 4 Jobs using the Architecture ARM and the Cross Compiler arm-eabi from the Android Source Repo. Once finished you'll find your Image in your kernel folder under arch/arm/boot/Image. Now you'll need to build your own ramdisk this is covered here at xda as well azuzu has also build a tool available to download.
Follow the instructions to create the kernel.sin which now can be flashed with Flashtool. Changes to Kernel source will now be available to your compiled Kernel. How to change the Kernel source is beyond this tutorial but programmers in C will have fun there.
Building Android from Source
Now lets get started with the more advanced part and the most frustrating part in the beginning. The easiest way to build for the mimmi would be to sync the Cyanogen Gingerbread source code. Which can be checked out using the repo binary (see tutorials on googles website also which packages for which architecture (x86 or x64) are addionally needed also the correct java version is important)
Now lets cut to the chase.
Code:
repo sync -u http://github.com/CyanogenMod/... -b gingerbread (or froyo or another branch you would like to check out)
once your repo is synced (you could also add "-j8" to enhance the speed of the repo command, it will take quite a while) you are almost ready to start. If you synced an AOSP source you will have the get your device and hardware libraries ready first. This means you will have to port i.e. the device project and hardware project (mimmi and msm7227-common folders from CM and also hardware folder from CM) to the AOSP source. It makes sense to port these to your AOSP source since they are the most complete so far. For Camera libraries you can sync from doixanhs repo the libcamera-5mp.
Now lets get a short overview over the Android source, it contains of various folders:
frameworks
device
vendor
hardware
platform
external
These are the most interesting, frameworks folder holds a bunch of android libraries and files which provide the functionality however often you will need to change a few things here and there since the mimmi is unique in its hardware. Everything you change will need to be approved with the following command:
Code:
make update-api
This will add all the functions, variables or anything else to the current-api.xml and ensure its available at build time.
The device folder holds device specific files, build-configs and so on. Lets look at some of the important files:
Code:
device/semc/mimmi/overlay/frameworks/base/res/res/values/config.xml/power.xml
The two xmls hold configurations of the build process which are device specific either LightSensorWarmupTime and so on the full list is in the root folder of frameworks/base/res/res/values/config.xml <-- any part you feel you need to change copy the lines from there and change in you device specific config.xml.
Now to another file:
Code:
device/semc/msm7227-common/BoardConfig.mk
This files olds the device sepecific configurations for the ARM, WLAN, etc.
Look at all the files in mimmi and msm7227-common and figure out what they do, google of course will guide you on that.
Also take a look in the:
Code:
vendor/cyanogen/products/
folder and find the mimmi config and get familiar with this as well. Nobody will be able to help unless you face specific issues. Developing is learning by doing and a lot of self teaching and the will to understand all of this yourself. We can't teach but you can learn. Specific questions however are usually proudly answered by most devs if they have already figured it out.
Lets start building now, first you'll need to get your lunch command to know which devices have makefiles (I always do it to be sure)
Code:
source build/envsetup.sh
This will now add all the known devices to your lunchcombo (the devices are usually definied in the vendorsetup.sh pointing to the makefiles)
Code:
lunch
Will get you the list of available devices and will wait for user input to select the device you want to build, choose the mimmi.
Code:
make -j4
This will start the building process with 4 jobs.
Now its time to get a coffee. Usually you will have a bunch of different issues on this part but the CM source is pretty good and you might be lucky there.
Now lets look at typicial errors:
Code:
symbol not found : means a variable in used in the code has not been defined, before its use this one is a tricky one
try to locate the source file and find the line the compiler is complaining about. Now check in the framework usually in
res/res/values or layout look for the type of the erros (String or array) and look in the corresponding xml if the variable
is present. Now look in vendor/cyanogen/overlay if your variable is also declared there and so on.
Code:
function not found/function of incompatible types : also a tricky one, you might sync a repo and made local changes to
a file and suddenly your functions another file calls are not present or have changed, find the differences between them and
think about how it has changed, maybe add the function again or maybe another function does the job now. you will need
to locate the changes compare them and you should be fine again
Code:
No Rule to make target: this one is usually due to a missing/incomplete Makefile you might need to add manually or
if you don't need it anyway the easiest would be to delete the not building folder
Once your source has finished compiling you will find you system image in:
Code:
out/products/mimmi/system/
As of now unfortunately its still missing a few files here and there. Compare ROMs and Compare what might needs to be added. However I advise not switch libraries around its best to use your own libraries. However sometimes you will face issues when doing this so start with the files created there and just add the recovery and ramdisk to your rom. Now observe via adb if everything is running. This will take time and add one missing lib after another one and reboot, after each (like grallocs or librils or fm libs and so). This is basically a debugging part of the job.
You will now add one by one more functionality, but keep in mind to use logcat to see what goes wrong, maybe some stuff can be changed in the source rather then randomly adding stuff.
also this one just in case.
Hey there c: As always, you come surprising everyone with your stuff haha Good job on this one, I think it is always good to have some tutorials from the people who build specifically for our Mimmi's
Before reading this, I wanted to get started on developing and I went to Android's official developers site, I did some steps, now I have the complete source of Android here (I use Ubuntu 10.04, the LTS version... Dunno if telling you that it is LTS ver. really matters, but just in case) andthe whole environment ready to build. Now, reading at this, I realize I don't have 4Gb of RAM on this "old" (2007..) notebook. Anyways, the thing is: I followed the steps listed here, but when I wrote this command-
Code:
$ make -j4
-the terminal started to execute files, or something... I'll add a screenshot at the end about this. It has been 3 days since that, and the terminal is still doing the same. I know developing requires a lot of patience, but... 3 days? Is this normal?? I have looked through the Internet for problems with this command, but no one seems to have talked about it.
Thanks for your time, work and effort for the community, we really appreciate it c: Bye!
Link to the Screenshot:
http://i259.photobucket.com/albums/hh313/link_4ever/Screenshot.png
The 'make -j4' uses 4 threads to compile everything, if your notebook does not have at least an hyperthreading-technology enabled CPU, well, that's to expect when building an entire OS, plus you don't have sufficient RAM, I do have 2GB and a DualCore CPU and it takes at least 1 hour to compile an average desktop kernel with that same command. I have not tried to compile android, but I think that it will take at least 4 hours to compile everything. Just my thought.
RozenTensai said:
The 'make -j4' uses 4 threads to compile everything, if your notebook does not have at least an hyperthreading-technology enabled CPU, well, that's to expect when building an entire OS, plus you don't have sufficient RAM, I do have 2GB and a DualCore CPU and it takes at least 1 hour to compile an average desktop kernel with that same command. I have not tried to compile android, but I think that it will take at least 4 hours to compile everything. Just my thought.
Click to expand...
Click to collapse
Thank you for your answer! Just ten minutes ago, the 'make' command finished ! And about my notebook, it is just like yours: 2Gb RAM and Dual-Core CPU, I'm not sure but I think it runs at 2,8 GHz. And also, like I said earlier, I know developing takes time. I know how slow processes can be, in fact, there were commands previously that took 1 hour or more to finish their tasks. 1 hour, 4 hours, it's ok but... 3 days? Isn't it a bit too much xd?? Now I'm afraid to turn off the computer because I don't want to compile that thing again hahaha
the "-j" option depends on the number of (virtual) cores you have.
get the number:
Code:
grep processor /proc/cpuinfo | wc -l
if you have native linux and like to work on the machine I recommend do lower the number at least -1 otherwise get a coffee and keep hands off the build process
b
make -j4, lol. Many people do not have. 4 cores on the processor
paul-xxx said:
make -j4, lol. Many people do not have. 4 cores on the processor
Click to expand...
Click to collapse
This parameter refers to threads instead of hardware cores
Sp4rrow said:
This parameter refers to threads instead of hardware cores
Click to expand...
Click to collapse
ok. probably a mistake. but still. I always use 2. it brought to me the best results
I use j6
And also j refers to jobs everybody may change to what they want. For kernel i build with j12.
If you know better like it seems you always do write it down.
Sent from my U20i using xda premium
I can't find any 2.1.1.A.0.6 Sources. Link to the sources you use slade?
http://developer.sonyericsson.com/cws/devworld/search-downloads/opensource?cc=gb&lc=en
should be:
x10_x10mini_X10minipro_x8_eclair_2.1.A.0.435.tar.gz
Stock Kernel with only CWM5 installed...
Slade i want some help from you. how can i embed CWM5 in the stock kernel without any other changes to it??
i want a stock kernel with nothing changed in it only CWM5 installed in it. how this can be done???
i forgot to say the most important thing!: Thank you very much for your work and effort Slade
I just came to the configuration menu of the kernel. i see there are options predefined for the mimmi, but how can i optimize it more, there are soooo many options, and to tell the truth i don't have a clue what they do

[Q] Adding kernel modules to Z902

Okay so it took me a while to get my z902 to the point where i could begin messing around with system folders. I managed to do so by using Lubuntu and some other tools. I have several questions regaurding customizing the kernel image. In the end i would like to add support for sixaxis controllers via usb (hid-sony.ko) as well as modify the build.prop to get the device recognized as something with more apps in the app store. The last thing i want to accomplish is making the real sd card mount as read write as well as possibly giving the option to swap the internal sd card with usbhost0. my questions are...
1. since lubuntu runs independently from the android OS would i be able to modify the system files without the need to recompile and flash a recovery image..? I managed to make the nandd read write by reformatting the nandd and copying the files back to the partition. so in theory i should be able to add modules and instanciate them in init.rc.
2. I have modified the build.prop in attempts to open the play store by changing some things i changed on another device.(samsung galaxy tab 2 7 in.) The device is recognized as the Nexus S as i wanted in the about this device in settings. the play store opens and loads the initial first page. but as soon as i try to navigate anywhere within it stops workin and hangs. I believe that something in the build.prop is conficting the changes causing the play store to get confused and give up.
3. going back to question 1. I was wondering if anyone knows if extracting a custom rom image onto the nandd via lubuntu would be possible. as i know there are several roms out for the mk802 II (supposably identicle but i speculate a few diffences.) which have already exploited the ability to use ps3 controllers bluetooth dongles as well as usb ethernet adapters.
Im really looking forward to making this device into a gaming console as i have managed to get quite alot accomplished with it already before i got it read write. i found that quite a few games that would be thought to not run on this device actually do. using sideloaded apks i managed to install and run quite a few high end gameloft games as well as other open gl dependent games. some run better than others but i see alot of potential and wish to develope this device to better working order. any help with these problems would be greatly apreciated as im not a pro but def a fast learner.
I would also like to thank Rodrigolopezguerra for helping me figure out how to get this device to read write status. i ran into quite a few problems but In the end his guide helped me quite a bit.

[ROM] (well... sort of...) Dell Venue 7840/7040 running native Linux

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
Watch the demo on youtube:
20 days now, believe it or not but I have been waiting for something like that...sort of. Well, I'm gonna give it a try and see if I can provide you with some feedback.
Thanks, amazing idea.
Glad to finally get any feedback
Which device are you using? I have made some progress with the 7040 version - the attachable keyboard now works! I'll update the image file later.
Good luck with the installation and don't hesitate to contact me if you run in any difficulties...
I'm running the 7840. You wouldn't manage to get some kind of an installation script would you?
Well... I'm afraid a script is not possible as it includes to many different platforms...
However I can upload an image of the SD card (I'm currently already working on that) so that you would basically just have to put it onto a SD card.
Linux is running quite well now on the 7840. Even Bluetooth is working without any need of configuration...
So please be patient, may take some days...
fcipaq said:
Well... I'm afraid a script is not possible as it includes to many different platforms...
However I can upload an image of the SD card (I'm currently already working on that) so that you would basically just have to put it onto a SD card.
Linux is running quite well now on the 7840. Even Bluetooth is working without any need of configuration...
So please be patient, may take some days...
Click to expand...
Click to collapse
Amazing to hear that, thanks for your work. Really looking forward to that.
K, you got it! The links to the file system are online now, as well as the new kernels. Let me know how you like it!
PS: The kernel for the Dell Venue 7840 is running with reduced resolution. If you intend to only use the table in portrait mode I can post an boot image running full resolution...
Thank you, I'm currently very busy with exams, I'll look into it the end of this week. Thank you very much for your efforts.
Fingers crossed for your exams!
Also, I've now implemented the ability to set a custom wifi mac and country code using the kernel command line. This can be set by editing the image file with a hex editor (command line is right at the beginning of the file, there is no checksum which has to be recalculated).
Alright, working good so far. Battery drain is pretty high, I assume thats due to the lacking suspension mode. Oh and sound would ofc be nice x). Graphics acceleration would be nice to have and I guess improve battery run time.
Congrats you got it working (first confirmed!)
I find battery performance quite decent when actually running (i.e. using) the system. I get approx 8 hours of uptime, but I agree that standby performance is indeed terrible - as you already stated this is due to the lack of suspend mode. You actually need to shutdown the tablet when not in use.
Graphics acceleration is (I'm quite sure) not going to happen. Linux is lacking a PowerVR open source drivers, many have tried but no success so far afaik.
Sound drivers appear to be tricky. I found at least two pieces of code to be problematic in a 32 bit kernel, but might be working in a 64 bit kernel. However, Intel/Dell seem to do some initializing in user space code which is unavailable. So doesn't look to good for sound...
I installed Linux the the device's internal EMMC (purged Android) which is really boosting performance (internal storage is approx three times the speed compared to the external SD card reader's max speed...)
I tweaked the kernel a litte, it is now possible to choose between full and reduced resolution/color at kernel command line as well as a custom wifi MAC address and country code. I'll upload the updated kernel once I'll return from vacation...
PS: Hope your exams went well!
Awesome! I've been trying to figure out something interesting to do with my 7840. I'll likely have to wait until this weekend to flash it but am looking forward to doing so. Thank you for your work on this.
This is awesome!
I have been waiting for someone to do something exciting with this little guy. Thank you, seriously. I will be flashing this on mine and following along with your progress. This remains my favorite tablet to date (and I have gone through plenty), such a shame dell shut it down and it didn't get too much love from the community.
Well I had some issues with the state of my tablet after the last time I played with it; so things took a little longer to get going than I expected. But I was successful at getting this loaded and so far so good! I am not really seeing any slowness (using a Class 10 U3 mircoSD) but would be interested in the process to purge the Android file system as it would be more convenient at start-up.
I was able to connect to my WiFi using both wireless N and AC standards. In the little bit of testing I have done so far, sound and touch are working quite well. I did notice that the screen rotation script didn't redraw the desktop, but the touch locations seemed to change orientation. I have not yet tried to figure out why.
@fcipaq You have probably already seen libhybris but if not it may be worth looking at for 3D acceleration. I am not completely positive it is relevant as it may be specific to ARM processors. https://github.com/libhybris/libhybris/
It's been a while - sorry! I'm glad to get your feedback. I have been quite busy lately (and still am). I recently made only some minor tweaks/adjustments, e.g. patched to kernel against the blueborne vulnerabilty.
My 7840 is dead now as the connector failed (connected it too many times to my pc) - this is the sacrifice I made But I still have my 7040 up and running - which is basically the same device. I suggest you do a lot of the flashing from the linux command line or buy a magnetic charger cable ($5 on ebay) to reduce wear on the connector - it's quite delicate and really hard to repair (if you find any spare parts at all).
The rotation script is for touch only - this will not alter the screen rotation. The screen rotation (unfortunately) can only be changed by rebooting (or logging our and in again/restarting the X server).
@FairOh: Thank you for the hint. I am aware of that option but it would take quite some engineering effort and that is far beyond what I can do (alone). The current driver does not even give you 2D-acceleration...
I will upload an updated kernel asap as well as I will publish the kernel source so that others may contribute or study...
I benchmarked the internal EMMC and the SD-Card read/write speeds (I used a really fast SD card) and it turns out that the internal storage is about 3-4 times the speed of the external card. I think this is the card reader's limitation.
FYI: If anyone who reads this owns an Asus Zenfone 2 - this is almost the same hardware and a lot of code can directly be ported - I just took a quick glance at the Asus source code... (and to be honest, I took the wifi driver )
No rush, but curious if you have been able to get your source files uploaded/shared. Not that I'm much if a developer, but you gotta start somewhere.
@FairOh: I'm really sorry for my delayed response. I have been very busy lately...
BTW: it was my first project of that kind. I greatly appreciate your interest. Maybe you can figure something out.
Well source code is now online as well as the updated flashable boot images. Feel free to alter the source code in any way, republish, modify, share, learn etc...
I made some remarks inside the archive (readme file) to guide you to a running build quickly. I suggest you use the toolchain (compiler) from google (instructions provided inside the archive), otherwise the code might not compile properly.
Please let me now if you run into any difficulties compiling the code or setting up the build environment...
So far, so good
First of all, I want to thank you so much for your work on this.
I have a 7040 and I was really concerned about Blueborne vulnerability. I tried a few months ago this, but unfortunately I wasn't be able to get working the Bluetooth adapter, so the built-in keyboard/mouse weren't working (Firmware contents were in place, so I didn't really know what happened).
This time, December revision, I run into the same problem and also when I want to update the system, Ubuntu ask me the admin or root user password.
If you don't mind share the admin/root password, I would be very glad to try and fix the Bluetooth adapter in my system and maybe tweaking some system settings.
Finally, I want to thank you again. Our little loved devices can do so much things because of you. Maybe sometime in the future I will be able to dig in the source code and collaborate in these project (First, I have to learn a lot of things, but I think I will).
Glad you like it!
I might have forgotten to mention that the password is simply "password" sorry!
First of all you need to make sure that your bluetooth adapter is working at all (you may try to pair with any bluetooth device). All you basically need to do is to put the firmware files in place.
Connecting to the magnetically attachable keyboard is a whole different story. As Dell has not released the kernel source for the Dell Venue 7040 (but only for the 7840 model) I had to reverse engineer the driver for the keyboard. There are four pins (two inner pins and two outer ones) connecting the keyboard to the tablet. The outer ones are used to supply power whereas the inner ones serve to put the keyboard into pairing mode - using a "secret" protocol which I have not figured out. So here is what I did to get it working anyways:
1. Boot into Android
2. Delete the Dell keyboard from within the bluetooth menu (this will immediately cause Android to try and reconnect)
3. When prompted to enter the pin just click on cancel (the keyboard will remain in pairing mode for another minute awaiting incoming requests)
4. On another Ubuntu PC search for pairable bluetooth devices. Once the Dell keyboard has been detected connected to it.
5. On the Ubuntu PC tar/copy the key files in /var/lib/bluetooth/XX:XX:XX:XX:XX:XX
sudo tar czf btkeys.tar.gz XX:XX:XX:XX:XX:XX
(These are the keys the Ubuntu PC brokered with the keyboard - we are going to reuse these on the Android tablet)
Hint: Both PCs need to have the SAME bluetooth MAC address.
6. Reboot the tablet into Ubuntu and copy the tared file over to /var/lib/bluetooth.
7. Untar this file on the Android tablet in /var/lib/bluetooth
sudo tar xzf btkeys.tar.gz
8. Reboot (The Android tablet now has matching keys to connect to the keyboard).
BEWARE: Booting into Android will result in resetting the keyboard and you will have to do the procedure all over again. You may use electrical tape to disable the two inner pins thus preventing Android from telling the keyboard to go into paring mode)... It's a littel complex... I asked Dell twice to publish the source code but to no avail (did not even receive an answer)

how to compile a rom in azure?

hello i need help i wanted to compile a custom rom
But always full space already put the maximum of the vm i put 3 disks and it didn't even matter. How i add at least 1 terabyte in azure because with little space and impossible to compile i tried in many ways but not to compile the disc always fills always put in / mnt but even so the error as I do I need help

Categories

Resources