Related
Well, the time has come that I think my kernel is ready for public consumption.
THIS IS ONLY FOR THE USA VERSION OF THE GALAXY PLAYER 5.0 (YP-G70). If you have a mechanical home button instead of capacitive buttons at the bottom, do not flash this (rumirand has a kernel for you)! If you have a 4.0, do not flash this (SteveS has a kernel for you)!
Read the first three posts of this thread COMPLETELY before asking questions - if you ask a question that is answered in the first three posts, you WILL be flamed.
I'm continuing my Daily Driver name, even though it isn't as good of a name as it used to be. It is my daily driver - but what kernel dev doesn't use their own kernel as a daily driver? It made more sense in the Infuse days when I was running my own unreleased kernel for months and a few people asked for it. Oh well, I'm lazy - same name for now.
This is going to be maintained in the same manner and spirit as my other Daily Driver releases for the Samsung Infuse and Samsung SGH-I777 (AT&T Galaxy S II) - http://forum.xda-developers.com/showthread.php?t=1212795 and http://forum.xda-developers.com/showthread.php?t=1289460
It is built from sources at https://github.com/Entropy512/linux_kernel_galaxyplayer and initramfs at https://github.com/Entropy512/initramfs_yp-g70
Current features:
coolbho3k's Samsung Sleep of Death patch - allows stable use of screen-off profiles with limits below 800 MHz in SetCPU
netarchy's conservative governor tuning patch - Reduces the polling interval, allowing conservative to ramp up/down faster. Over in I9100 land they're calling this "lionheart" and it's all the rage. (It makes me sad when people won't accept a governor until it's renamed and hyped up way beyond what it is...) As an example, a GSII would take 0.4 seconds to ramp from 200 to 1200 MHz with the default conservative governor, it can go all the way in 0.1 second with this patch.
conservative set to default governor - use SetCPU or a similar app to change it
jhash3
TinyRCU
CIFS and Tunneling modules included
ext4 partition mounting support in kernel and initramfs thanks to rumirand - ghetto Lagfix baby!
CWM 5.0.2.7 based recovery - Mostly tested, seems working, but may have a few bugs still to work out, rumirand helped a lot on this one
Insecure kernel - gives you automatic root in ADB shells
Per-file fsync() disable capability - see "dangerous features" documentation below
Standard bootanimation (/system/media/bootanimation.zip) support
Charginghacks - faster charging at low battery, slightly slower near the end, overall faster charging while trying to minimize battery stress
CPU core voltage control - use SetCPU or a similar app
CPU overclock to 1.2 GHz - use SetCPU or a similar app
Planned features, short-term:
Pull a few other bugfix commits from my other kernels
Clean up CWM implementation
Planned features, mid-term:
Proper Voodoo Lagfix support (Automatic partition conversion instead of manual)
Planned features, long-term:
Overclock beyond 1.2 if people prove they can handle 1.2 with maturity (Infuse community couldn't handle any OC in a responsible manner...)
Features not planned:
Anything that has a high risk of trading off stability for performance, unless it can be completely disabled by default
Alternative governors - They almost always cause wacky behavior in some cases, and they don't offer anything that can't be done with a combo of SetCPU profiles and tuning the conservative governor now that the minimum poll rate has been dropped.
How to flash .tar releases:
Linux/MacOS:
I forgot that Heimdall doesn't like this particular device - you will need to use a Windows virtual machine with USB passthrough support (like VirtualBox) and Odin, or root the device using the zergRush exploit and follow the "rooted device" instructions. (Ambrice has a fixed version of heimdall, but it must be compiled from source. If you know how to do that you don't need tips on how to use it. )
Windows:
Enter download mode - Power off your device completely, hold VolDn, and insert the USB cable
Use Odin - Google it or search these forums for details - try AdamOutler's resurrector thread in this Development forum
Any rooted device:
Extract the zImage from the .tar file of the release. On Linux, it can be the following (which should work in an ADB or Terminal Emulator shell on the Player itself.)
Code:
tar xvf <releasefile>.tar
From a shell with root access (ADB or Terminal Emulator), do the following:
Code:
dd if=zImage of=/dev/block/mmcblk0p11
How to flash .zip releases:
Put it on your sdcard, enter CWM, flash the .zip using CWM
If you do not have CWM, install an older .tar release then flash, or follow the "Any rooted device" instructions above, but extract the zImage from the .zip instead of a .tar
3/5/2012 Release:
Overclocking to 1.2 GHz (use SetCPU or a similar app to enable)
Support for running scripts in /system/etc/init.d
3/3/2012 Release:
Voltage control (no overclock yet, coming next)
1/29/2012 Release:
charginghacks from Infuse: Charging current on a wall adapter raised to 800 mA at lower battery, dropping to 700, then 600 (stock), then 550 (slightly below stock) as battery voltage reaches maximum. This gives overall lower charge times while trying to not stress the battery too much.
Also, final charge termination happens earlier - while this results in slightly less battery capacity per charge, it will help the battery retain capacity over time.
1/23/2012 Release:
Initramfs: Standard bootanimation support. Place a standard bootanimation in /system/media/bootanimation.zip - Note: The "stock" bootup sound still plays.
1/22/2012 Release:
A few bugfixes and power management improvements pulled in from other kernels
Ability to disable per-file fsync() - good for benchmark epeen, potentially dangerous for your data
1/14/2011 Release:
Initial release
FAQ
Q: Why does CWM default to my external SD card for backup/restore/flashing ZIPs?
A: This is the standard for Android devices going forward - internal on /emmc and external on /sdcard
Q: How do I enter CWM?
A: Until ROMs come out that have extended power menu mods: Power off your device, then:
Hold VolUp
Hold Power
Release Power when the SAMSUNG screen appears (continue holding VolUp)
Release VolUp when CWM appears
Q: I'm still not rooted?
As stated in the features, an insecure kernel only provides root in an ADB shell. Either use ADB to push /system/bin/su and /system/app/Superuser.apk and chmod them to the correct permissions, or take the easy way out and flash ChainsDD's Superuser package in CWM - http://androidsu.com/superuser/
Q: I used ROM Manager to do something, and something weird happened/went wrong. Why?
A: ROM Manager has not worked properly on any device I have ever owned. It softbricked any Infuse that had Voodoo Lagfix enabled, and never works properly on the SGH-I777. The only thing I've ever seen it do right was install gapps on CM7 on the I777.
Q: My battery will never charge past 80%, why?
A: The way Samsung estimates state of charge on our devices is extremely primitive and, in general, poor. Instead of a dedicated fuel gauge IC, they have tried to estimate battery directly from voltage with some funky compensation offsets depending on current operating state - the offset for wall charging is so high that it is impossible for the battery to read higher than 80% when on a wall charger unless you're putting the device under heavy load to activate some of the other compensation offsets. Sometimes it seems like the compensation code doesn't "kick in" when plugging in a charger, allowing you to see a higher number, other times it'll get "stuck on" even after removing the charger. The general thing, though, is that any percentage estimates of battery state are WILDLY inaccurate.
Q: Can you implement Voodoo Sound?
A: No - We have the same audio chip as the Galaxy S2 and Galaxy Note (Yamaha MC1N2) - Voodoo Sound requires a Wolfson WM8994.
Documentation on "dangerous" features:
Per-File fsync() disable:
This allows you to disable per-file write forced syncs. (e.g. if an app tries to force a write straight to disk, it'll just go to cache). This achieves the same goal as the modded sqlite hacks seen in tweaks such as USAS, however it can be disabled at runtime.
WARNING: THIS CAN CAUSE DATA LOSS OR CORRUPTION IN A CRASH
To enable, do the following in a terminal, or add it to an init.d script (look at my ondemand script as an example):
Code:
echo "1" > /sys/module/sync/parameters/fsync_disabled
And to disable (return to the default):
Code:
echo "0" > /sys/module/sync/parameters/fsync_disabled
Good for around 200 points of epeen in the database benchmarks in Antutu or 500-600 points of epeen in Quadrant. Real-world benefit: Probably not worth the data integrity risk, but you've got a choice now.
*reserved for whatever the heck I forgot above*
Thanks a ton Entropy512!! Been waiting for this.
Going to have to buy you a six pack via the Donate button!
Congrats Entropy512. I'm really thankful for your cooperation.
Its finally here!! Thanks so much entropy
Nice job entropy! Good to see that there is at least some development going on for these devices. This makes me wish I got a 5.0 instead..but I'm stuck with a 4.0.
Sent from my YP-G1 using Tapatalk
Thank You
I myself along with others appreciate you developing for the Galaxy Player 5.0 it is a great music player and it falls in the Galaxy family its a good device
Sent from my Galaxy Nexus using Xparent Blue Tapatalk
Says we can use Odin...do see put this in a phone or pda slot
Zei said:
Says we can use Odin...do see put this in a phone or pda slot
Click to expand...
Click to collapse
PDA - only modems go in phone I believe.
Just like flashing any other kernel in Odin.
Edit: CRAP I have Heimdall instructions but Heimdall won't work on the Player... I'm so habitually used to Heimdalling...
Would a factory stock image + root + this be good enough to post if done w/ the backup/restore feature?
Zei said:
Says we can use Odin...do see put this in a phone or pda slot
Click to expand...
Click to collapse
Yes when you use odin you will need to put the rom in PDA slot.If yiu use heimdall you will need to extract and flash the files separatly.
I hope this helps.
---------- Post added at 11:53 AM ---------- Previous post was at 11:53 AM ----------
Entropy512 said:
PDA - only modems go in phone I believe.
Just like flashing any other kernel in Odin.
Edit: CRAP I have Heimdall instructions but Heimdall won't work on the Player... I'm so habitually used to Heimdalling...
Click to expand...
Click to collapse
Heimdall does work on the player. I use it.
Hmm... odd, I tried to use it and it gave me some odd errors I've never seen before (I forget what at the moment) and then put me into forced download mode. I know a pit-dump has some rather odd looking results. Maybe if I just try and flash a kernel it will work.
I'll try again later today, and edit the instructions if it works.
I have my Player shut off for most of today - I've been having strange battery drain problems on my GSII for the past week or so, only when at home - and it seems like it started when I got the Player. So I'm shutting it off to see if it actually is affecting my phone.
Edit: Heimdall still isn't working for me
Code:
Heimdall v1.3.1, Copyright (c) 2010-2011, Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au
This software is provided free of charge. Copying and redistribution is
encouraged.
If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/
Initialising connection...
Detecting device...
Claiming interface...
Attempt failed. Detaching driver...
Claiming interface again...
Setting up interface...
Checking if protocol is initialised...
Protocol is not initialised.
Initialising protocol...
Handshaking with Loke...
Beginning session...
Session begun with device of type: 0
Downloading device's PIT file...
PIT file download sucessful
Uploading KERNEL
100%
ERROR: Failed to confirm end of file transfer sequence!
KERNEL upload failed!
Ending session...
Rebooting device...
Re-attaching kernel driver...
After I flashed your kernel it won't let me connect to the market, my Wi-Fi is turned on and I connect to the browser just fine but not the market, help?
That's strange - no problems with market connections here. (Edit: Just updated BetterBatteryStats...)
Try rebooting?
Or wait a bit - sometimes the Market just goes down.
Entropy512, I've been studying your github and how you enable ext4 support in the kernel. Could you explain how you did it? I know it has to do with editing "/ arch / arm / configs / yp_g70_usa_defconfig" but I can't find that file in samsung's source or on Steve'S github. And after you do that you just edit the mount points in init.rc, right? I'm asking because I'm gonna try to get ext4 (lagifx) for my 4.0!
Thanks.
P.S. sorry if I'm a noob
klin1344 said:
Entropy512, I've been studying your github and how you enable ext4 support in the kernel. Could you explain how you did it? I know it has to do with editing "/ arch / arm / configs / yp_g70_usa_defconfig" but I can't find that file in samsung's source or on Steve'S github. And after you do that you just edit the mount points in init.rc, right? I'm asking because I'm gonna try to get ext4 (lagifx) for my 4.0!
Thanks.
P.S. sorry if I'm a noob
Click to expand...
Click to collapse
yp_g70_usa_defconfig was copied from venturi_usa_defconfig prior to modifying it - I decided to start maintaining my own defconfig rather than overwriting the original one.
Galaxy Player 4.0 is palladio instead of venturi. SteveS also uses a renamed defconfig though - something like steves_blahblahblah_defconfig
To change things for a 4.0, it would be something like
Code:
make steves_blahblahblahwhateverthisis_defconfig
make menuconfig (enable ext4 support in the menus here)
cp .config arch/arm/configs/steves_blahblahblahwhateverthisis_defconfig
git add arch/arm/configs/steves_blahblahblahwhateverthisis_defconfig
git commit
Entropy512 said:
yp_g70_usa_defconfig was copied from venturi_usa_defconfig prior to modifying it - I decided to start maintaining my own defconfig rather than overwriting the original one.
Galaxy Player 4.0 is palladio instead of venturi. SteveS also uses a renamed defconfig though - something like steves_blahblahblah_defconfig
To change things for a 4.0, it would be something like
Code:
make steves_blahblahblahwhateverthisis_defconfig
make menuconfig (enable ext4 support in the menus here)
cp .config arch/arm/configs/steves_blahblahblahwhateverthisis_defconfig
git add arch/arm/configs/steves_blahblahblahwhateverthisis_defconfig
git commit
Click to expand...
Click to collapse
Cool thanks! Will definitely try it out.
I got fed up with crappy wireless reception in a hotel and decided to use my RTL8187 based Alfa USB wireless adapter with my Prime. Here's how it works, pretty rough and open to improvement but it works.
Set up a chroot (ubuntu/debian will work); everything is done within that chroot
Compile and install the drivers for your usb adapter (see the Kernel modules thread for instructions)
apt-get install wicd-curses (or wicd-cli if you prefer), wpasupplicant and dbus plus any of its dependancies
Turn off the broadcom wifi that's controlled by android
insmod your modules (in my case eeprom_93cx6.ko, mac80211.ko, rtl8187)
start dbus and wicd (/etc/init.d/dbus start; /etc/init.d/wicd start)
run wicd-curses (or wicd-cli), refresh the network list and connect to your network
configure dns for android to your dns or to googles (setprop net.dns1 8.8.8.8)
???
Profit
To stop using external usb wifi, reverse the steps; basically:
stop wicd and dbus (/etc/init.d/wicd stop; /etc/init.d/dbus stop)
kill any running dhcp clients (killall dhclient)
rmmod your modules (in my case eeprom_93cx6.ko, mac80211.ko, rtl8187)
To be able to insert mac80211 without it complaining about missing symbols for ewma_init and ewma_add, I had to add lib/average.c to the mac80211 module; it's pretty simple, here's how i did that:
Go to your prime kernel source tree (e.g. /usr/src/linux)
cp lib/average.c net/mac80211/
Edit net/mac80211/Makefile and add average.o to the list of objects for mac80211-y (don't miss the trailing backslash if you add it halfway)
For simplicity sake I've added the modules for an rtl8187 based usb nic to this post. These are built against the 9.4.2.7 kernel source, and work fine for the 9.4.2.11 release (current ICS release as of Feb 07 2012).
Oh and I don't recommend doing this with androids wifi turned on, it kind of breaks it until you reboot your tab. So if you're smart you'll script the above and spit out a nice warning that your broadcom module is still loaded and then exit. I had no problems switching between external USB wifi and built-in wifi as long as I only turned one of them on exclusively.
Enjoy solid wifi on your prime
,can you show screenshots of how much of an improvement it was using a USB wifi device vs. Stock wifi. You should relay this info in the kernel modules thread n SaturnDe can probably clean it up or simplify more or make it easier to implement. He could add it to his driver packs and make a new ATP tweaks version. For quick app enabling of this USB wifi method. This is very cool. I really would like to see how much of an improvement in reception thisngives.
You can't use the external wifi together with the android wifi control, it isn't compatible. So screenshots make no sense. This is why you need the chroot and wicd-curses; that's where you configure your wifi connection, not in android.
As for the increase in reception, it depends on your usb adapter. If you have one with an external antenna that is 6 feet long, you can figure out how much of an improvement that would be. Nothing is stopping you from connecting an even bigger wifi antenna if you want. So, reception increase could be anywhere from a few dB up to long range 5km wifi using powerful long range antennas.
infernix said:
You can't use the external wifi together with the android wifi control, it isn't compatible. So screenshots make no sense. This is why you need the chroot and wicd-curses; that's where you configure your wifi connection, not in android.
As for the increase in reception, it depends on your usb adapter. If you have one with an external antenna that is 6 feet long, you can figure out how much of an improvement that would be. Nothing is stopping you from connecting an even bigger wifi antenna if you want. So, reception increase could be anywhere from a few dB up to long range 5km wifi using powerful long range antennas.
Click to expand...
Click to collapse
Lol, I believe you're being told to do it yourself 'darin. I have a nice little wifi usb adapter, I'll give this all a whirl later on after work.
Certainly not a solution for myself, but a simple workaround for those uncomfortable with modding and who don't mind annoying sticks coming from their tablets/laptops. Not saying anything against this, I just always hated using older laptops with usb adapters and don't see me liking it more on a smaller, more stream-lined device.
buxtahuda said:
Certainly not a solution for myself, but a simple workaround for those uncomfortable with modding and who don't mind annoying sticks coming from their tablets/laptops. Not saying anything against this, I just always hated using older laptops with usb adapters and don't see me liking it more on a smaller, more stream-lined device.
Click to expand...
Click to collapse
FWIW, this can also be used to run aircrack or other wifi security analysis tools with, which aren't able to ever run with the builtin broadcom adapter. So it has other uses too
infernix said:
FWIW, this can also be used to run aircrack or other wifi security analysis tools with, which aren't able to ever run with the builtin broadcom adapter. So it has other uses too
Click to expand...
Click to collapse
Has anyone tried doing so with their ATP? I'd be very interested to know. I've had a bunch of problems with the build-in card in terms of using the bt5 pentest suite so this might potentially solve some of those problems
Yeap, done with BT5 for arm and ALFA AWUS036H (Rtl8187), apt-get the aircrack tool and bang! : monitoring mode enables
Thanks a lot to the OP for the modules !
what version of linux are you guys using? I was trying to install wicd-cli and wicd-curses through my bt5 and had no success. wicd-curses just can't install on arm bt5 for some reason stating that some dependant libraries are incompatible. wicd-cli gives me an fopen error during install and then craps out when I try to run it.
Thanks for the info, one question tho.
Did you have to do anything special to get the wicd client to run, I get the error 'cannot connect to dbus socket' or something to that effect..
I have tried wicd-cli, -curses, and -gtk
Any help would be appreciated.
Dear Sirs,
This may be newbish, but where can I get the source for the kernel modules the op mentioned. I have obtained my kernel source for my phone, but can't seem to find the source I actually need to compile, rtl8187, etc.
Update:
Alright, I found them, they are part of the compat-wireless package. http://www.aircrack-ng.org/doku.php?id=compat-wireless
I still can get it to compile, but I guess I need to learn a little about cross compiling.
I did find a kernel for my device with the modules already built in, used and voila. Cracked a wep key in about 5-10 minutes. I was happy, happy, happy. Then, a ruinous moment occurred. Almost the very second aircrack-ng finished cracking the key, my phone came up with a low battery warning, I was using a awus036h wifi adapter and it was draining my battery fast, I had about 50% to begin and had the 14% warning hit me about 10 minutes in, funny thing is the warning is usually 14%, but this time was 13%, go figure? Anyway seconds after the warning my phone just blanks, turns off. I plug it in and reboot and the battery is at 0% and stuck there, so a word of warning:
An external wifi adapter my require more usb host juice then the battery can safely supply. I have seen people using powered hubs to circumvent draining the phone battery, I would defintiely recommend the practice.
Ok, if the last poster was noobish then i dont even know where i would be because i need help just deciphering wtf OP said.
I realize the drivers for each wireless adapter are going to be a little different... because each wireless adapter is different, but can someone translate this into non geek? I dont even know where to begin.
Can this work using the ubuntu/backtrack/linux installers from the market? Ive muddled my way through that and got linux working that way, or is this completely different?
I just wanted to say THANKS! I now have my Alpha card working in Monitor mode on my TF300T Transformer PAD and man it feels good! I have never been able to get this to work and have been trying to use an external card in backtrack for a loooong time! Thank you 1 million times!
Hi! Thanks for instructions. I got compile and install driver for my G-Sky (rtl8187) on AllWinner A10 (Ainol Aurora II) with android 4.0.4 and 3.0.8 kernel. All network settings were done with tablet's terminal (without PC). Only one problem remains - I can't undestant connecting to wpa networks - it's too difficult. Here: http_://nuzhen-sovet.ru/content/podklyuchenie-vneshnego-wi-fi-adaptera-k-planshetu-na-android-4 you can read my manual with connection to nonWPA networks on russian (read with google translate).
I am wondering if something like this could be used for the folks concerned with bt\wifi fallout. There are plenty of bluetooth dongles out there that are small enough to leave in the dock full time. I have the fallout I just dont use bluetooth enough to care.
BlackUbuntu 12.04 V4: http://kat.ph/blackubuntu-12-04v4-for-android-s3-tested-t7252750.html
So how would I go about this on the galaxy s3 l710.
My alfa card reads on pcap app.
Hi everyone.
I plan on using the Bolse adapter : http://www.mybolse.com/products_more.asp?id=96 that has an Android driver with my Galaxy Note2.
Do I have to go through all these steps with it considering it has an Android driver?
Thanks
infernix said:
I got fed up with crappy wireless reception in a hotel and decided to use my RTL8187 based Alfa USB wireless adapter with my Prime. Here's how it works, pretty rough and open to improvement but it works.
Set up a chroot (ubuntu/debian will work); everything is done within that chroot
Compile and install the drivers for your usb adapter (see the Kernel modules thread for instructions)
apt-get install wicd-curses (or wicd-cli if you prefer), wpasupplicant and dbus plus any of its dependancies
Turn off the broadcom wifi that's controlled by android
insmod your modules (in my case eeprom_93cx6.ko, mac80211.ko, rtl8187)
start dbus and wicd (/etc/init.d/dbus start; /etc/init.d/wicd start)
run wicd-curses (or wicd-cli), refresh the network list and connect to your network
configure dns for android to your dns or to googles (setprop net.dns1 8.8.8.8)
???
Profit
To stop using external usb wifi, reverse the steps; basically:
stop wicd and dbus (/etc/init.d/wicd stop; /etc/init.d/dbus stop)
kill any running dhcp clients (killall dhclient)
rmmod your modules (in my case eeprom_93cx6.ko, mac80211.ko, rtl8187)
To be able to insert mac80211 without it complaining about missing symbols for ewma_init and ewma_add, I had to add lib/average.c to the mac80211 module; it's pretty simple, here's how i did that:
Go to your prime kernel source tree (e.g. /usr/src/linux)
cp lib/average.c net/mac80211/
Edit net/mac80211/Makefile and add average.o to the list of objects for mac80211-y (don't miss the trailing backslash if you add it halfway)
For simplicity sake I've added the modules for an rtl8187 based usb nic to this post. These are built against the 9.4.2.7 kernel source, and work fine for the 9.4.2.11 release (current ICS release as of Feb 07 2012).
Oh and I don't recommend doing this with androids wifi turned on, it kind of breaks it until you reboot your tab. So if you're smart you'll script the above and spit out a nice warning that your broadcom module is still loaded and then exit. I had no problems switching between external USB wifi and built-in wifi as long as I only turned one of them on exclusively.
Enjoy solid wifi on your prime
Click to expand...
Click to collapse
Well, after i read most replies, most don't understand how to get things set up, please describe it a bit more, organize things, like section for requirements, etc.
Explain to Kernel and Kernel Modules and how to build them
For everyone who didn't Understand Step 2, I Will explain and tell you how to do that, Please read it all to Understand:highfive::
What is Kernel?
A Kernel is Simply a Bridge Between Software and Hardware.
So The Drivers are Inside the Kernel itself?
For Short, Yes. In Linux Overall (Android, Ubuntu, etc.), Drivers are Included Inside the Kernel it self, Some say for Performance Improvements.
Your Phone's Android Kernel Include all the Drivers required for your phone to function, And for the Devices that Support USB-OTG there are a Plenty of Drivers Included, However, Drivers like the one's for the RTL8187 Most likely won't be included.
What are Kernel Modules?
Kernel Modules are Files that have *KO Extension That can be loaded Through insmod and Unloaded through rmmod Command-Line Commands, These files is to Extend the Functionality of the Kernel Without Touching/Editing it at all,It Just does some effect Until the Modules are Unloaded/Device Rebooted, Kernel Modules useful Either by Adding a Driver or by adding other things..[/B]
What are the Disadvantages of Kernel Modules?
Well, There's no Difference Expect you need to reload the Kernel Modules after a Reboot or Module Unload, Some Tutorials Show you how can you add a command to load these Modules after each boot up
So A Kernel Module is the Solution for adding a driver without modifying the kernel?
Yes, Kernel Modules is the Solution here, Each USB Device needs it's own Kernel Modules, so you can't Download a Module and Use it, You need to Compile yours.
What is the Requirements to build a Kernel Modules?
1.You need Linux Environment, Use either the Chrooted Linux On you phone, or, better use Ubuntu or any linux Distro on a Computer, Build the Module, and load it on the Chrooted Linux on your phone,
2.You need an Internet Connection in the Linux Environment.
3.You need the Driver Source code for your USB Device. Get them from the Manufacturer if he offer them, if he doesn't, You need to Look in the internet until you find one, if you were unable to find the Source code for you Device but found similar Devices Driver source code, see if the Other Device Driver is Compatible with yours usually a Single Driver work on many Devices, you need to look by your own way
4.You Also need some Programs to install in Order to be able to Compile the Kernel Module, Enter these Commands in a Terminal, Pressing Enter after each Line, and make sure you have the Internet Connection:
HTML:
sudo apt-get install fakeroot
sudo apt-get install build-essential
sudo apt-get install dpkg-dev
sudo apt-get install linux-headers-$(uname -r)
For the most Important Part, make the Kernel Module?
1.Unpack the Kernel source code, if it's Extension is bz2 then use:
HTML:
tar jxvf <package-name>
Where <package-name> is the Compressed File name, and make sure you put it in the Home Folder, if it's Extension is gz or tgz the Unpack it with:
HTML:
tar zxvf <package-name>
2. Second, Find config.mk and Open it with gedit or whatever Text editor you like, at first, there is two lines about WPA Support, make sure they end with y rather than n, Save and close.
3.Third, and last, is to Compile the Kernel Module, Open Terminal and use cd command to get inside the folder that contains the Source code, and Simply Execute:
HTML:
sudo make
And now you own the Kernel module, Now copy the Kernel Module to the root of your Internal Storage, Open up a Terminal and Type:
HTML:
cd /mnt/sdcard
insmod <kernel-module-name>.ko
And make sure Internal Wi-Fi is OFF and now your Kernel Module works, Follow the Guys steps to get it working on Chrooted distro
Troubleshooting:
If you find a similar Device Driver Source Code and after Compiling it doesn't work plug the Device in, Open a Terminal and type:
HTML:
sudo lsusb
and Find your Device in the Output and you should find Numbers for it Looks Like 0x148F,0x2070 or whatever, Write them down.
After Step 2 Follow These Steps:
Find usb_main_dev.c and Under #ifdef Section add the Following Line:
HTML:
{USB_DEVICE(0x148F,0x2070)}, /* Your Device name, this is just a Comment. */
Where You should replace 0x148F,0x2070 with the String you just wrote down.
And then Continue Other Steps and it should work.
Please Click "Thanks" Button if i Helped you
Also, if you had any Problems and fixed them Just tell me so i can add them to Troubleshooting Section.
Hi! Im going on vacation in 2 weeks and I want this to work on my Nexus 5. I run CM12. I think I can manage the kernel part myself (there are a lot of nexus 5 kernels which include the driver of my wifi dongle: TP-Link WN722N). but I don't know how to do the next steps (for example step 4 and 5). Can someone give me a detailed tutorial with command lines? I am familiar with terminal.
My step again:
Nexus 5 running CM12
Wifi dongle: TP-Link WN722N
thanks in advance!
Sorry for the extremely noob question, but will this make the wifi adapter work in the chroot or on the entire device?
This is more of a developer question, but I'm too new to post there. I'm looking for a phone or tablet with a replaceable TI WL127x/8x wifi driver. Does the G9 have it as a loadable module (the usual file name for it would be tiwlan_drv.ko or wlan_drv.ko)? Or if it's built into the kernel, is it possible to replace the kernel?
Why?
Gen8 has the 1271 driver it is loaded as a module.
BTW sources are https://www.gitorious.org/archos/archos-gpl-gen8/trees/master/hardware/ti/wlan
BTW my guess is that gen9 also have a module. Sources will also be on the archos git.
Gen8 has already SDE released so you can install your own kernel. For gen9 it still has to be released, however there are ways to go around this. Look at posts from Letama.
Also of interest can be http://www.openaos.org
divx118
Yes, gen9 also have tiwlan_drv.ko as module (wl1283), source for both kernel and tiwlan are on Archos gitorious gits even though they are a bit old compared to released firmwares.
If you're interested in sde for gen9, look at my signature.
Thanks for confirming that.
As for why, I just happen to know something about the driver and was thinking about doing a little android driver work. Maybe a roaming speedup, or possibly power management improvements.
Allow me to jump in.
My A10.1IT runs UrukDroid 1.6.2 and is normally connected to the LAN. It has some external shares mounted (Samba/CIFS).
I've noticed on several occasions that, when I move the device to another location (where the LAN is not available) the device totally and completely locks up. The green light is lit, and stays lit. A hard reset is necessary.
Any ideas?
sciurius said:
Any ideas?
Click to expand...
Click to collapse
I'd suggest to report it to "UrukDroid troubles" thread and, at least, let them know what is logged into syslog (or how they call it).
Last summer I got Ubuntu 11.04 working on my A43 but didn't post anything about it. With the progress made on kexec and the new kboot bootloader, it is now possible to have multiple kernels for multiple OS'es. This means it just got a whole lot easier to boot Ubuntu without losing the ability to run OpenAOS or UrukDroid Android OS'es.
As far as I'm aware, Ubuntu doesn't work on the 2.6.29-omap1 kernel that Archos uses and is the base for most other development on gen8. However, for A43 and A101 users, OpenAOS member Nicktime made some headway in porting the 2.6.37+ kernel to gen8, but appears to have abandoned the project. I've cloned his repository and have been working to add features that he did not finish implementing. However, his kernel did have the ability to boot an Ubuntu rootfs and it works very well for desktop Linux distributions (this also works on Debian and I would assume other ARM distros as well).
As I have been unable to build an Ubuntu 11.10 rootfs using the rootstock method that Ubuntu describes here, I've started working with the HP TouchPadBuntu rootfs from this thread. This rootfs boots well on my TouchPad and I've removed the TP-specific items from it and added the gen8 items as necessary. The display is working and the touchscreen works as well (calibrated correctly as I copied my calibration from my 11.04 install). It boots into Unity 2D which is the default. I'm having issues getting the wl1271 wireless module up, I have had it running once but NetworkManager said device was not ready despite being able to iwlist scan and see a list of AP's and then connect to them manually.
RELEASE 1
You will need the rootfs and the modifications.
To install, mount your destination partition (should be at least 4GB and ext3 formatted) to a location, then run the following:
Code:
cd /media/UbuntuPartition (change this to wherever your Ubuntu partition is mounted)
tar xzf /path/to/TouchPadBuntuRootfs.tgz ./
tar xzf /path/to/Gen8Modifications.tar.gz ./
If you do not have a microSD card in the slot, you need to edit the file etc/fstab and change anything mmcblk1 to mmcblk0, this is because the SD card will identify as mmcblk0 if it exists, but if it does not exist then the internal storage gets identified as mmcblk0 instead. This is a kernel issue I have yet to find a solution to.
Kernels for Release 1
These boot from partition 3 of internal memory (/dev/mmcblk2p3)
Normal and Rotated 90 Degrees
This boots from partition 1 of external sdcard (/dev/mmcblk0p1)
Normal
These files do not need an initramfs, but to flash to device or to use with kboot you need one anyways. Simply create an empty (0 byte) file named 'initramfs.cpio.gz' and use it for this purpose.
INFO ON KERNEL MMC/SD INITIALIZATION
mmc0 (mmcblk0pX) - Micro SD card
mmc1 (mmcblk1pX, mmcblk2pX) - System and Data blocks of internal memory
mmc2 - wl1271 SDIO interface
I installed the rootfs to an 8GB microSD and boot it using root=/dev/mmcblk0p1 on the kernel command line.
USEFUL LINKS
http://dev.openaos.org/wiki/Gen8Linux2.6.37
https://github.com/CalcProgrammer1/archos-gen8-kernel-2.6.37
http://forum.xda-developers.com/showthread.php?t=1304475
http://www.omappedia.org/wiki/OMAP_WiLink_Connectivity_Home
http://www.omappedia.org/wiki/MAC802.11_based_Wilink
TIPS AND TRICKS
Disk Usage Power LED:
It is possible to make the Power LED function as a disk usage LED. This will let you know when the system is reading or writing to the memory and can be incredibly helpful in determining whether your system has locked up or is just being slow.
Simply write "mmc0" or "mmc1" (depending on what interface you wish to monitor) to:
/sys/class/leds/power/trigger (maybe power_led can't remember)
This can be changed in the kernel source in the file "archos-leds.c" as well if you want it to apply during boot time.
Charging the battery on A43:
(as root)
echo 1 > /sys/devices/platform/battery/usb_online
echo 3 > /sys/devices/platform/battery/charge_level
Enabling WiFi:
The wl1271 driver from linux-wireless requires firmware files to be placed in /lib/firmware. These files can be downloaded from here. The MAC address on the wl1271 is not stored on the actual wireless chip and instead resides in a configuration file on the system data directory in a file called system/persist.archos.WIFI_mac. This file is in the form:
Code:
Wifi MAC XX:XX:XX:XX:XX:XX
To extract just the MAC address, use
Code:
cut -f3 -d" " /media/data/system/persist.archos.WIFI_mac
Then, to set the MAC of the actual device you can do
Code:
ifconfig wlan0 hw ether `cut -f3 -d" " /media/data/system/persist.archos.WIFI_mac
ifconfig wlan0 up
I'm doing this in /etc/rc.local which is run on boot. This means the WiFi card is prepared when the system boots. However, NetworkManager still sees the card as "not ready" and you must Disable Networking and then Enable Networking before it will start showing AP's. After doing this, the WiFi works properly.
Screen Rotation:
The A43's display is 480x854 ("tall screen" orientation). For Ubuntu it is likely more useful to have a widescreen 854x480 orientation. Fortunately, this is not hard. It involves adding two parameters to your kernel's command line (either via kboot or by adding them to .config and recompiling your kernel). THIS DOES NOT ROTATE THE TOUCHSCREEN INPUT, so make sure you have an alternate input device when using rotation (BT keyboard/mouse, USB keyboard/mouse).
Code:
omapfb.vrfb=y omapfb.rotate=1
Enabling Audio:
This is pretty easy. Audio is installed and ready to go, the only issue is that the default settings in the mixer for this chip happen to disable the output entirely. To fix this, open ALSA Mixer (alsamixer) and turn on either speakers or headphones, then turn on Left Mixer and Right Mixer (hit 'M' to unmute/mute a channel). Finally, turn up the 'PCM' volume and start playing music. I recommend getting rid of Pulse Audio, but I'm still trying to figure out the best way to do so as it uses a lot of resources and provides little benefit.
PowerVR SGX 530 GPU:
The OMAP 3630 CPU has an on-board PowerVR SGX 530 graphics processor. TI provides an SDK that contains the userspace driver libraries as well as the open-source kernel drivers. There are three modules that must be built (pvrsrvkm.ko, omaplfb.ko, bufferclass_ti.ko) and loaded into the system. Then the userspace stuff must be installed. There is information here that should help. So far I've got the drivers to compile, but they aren't properly loading yet. More work to be done on getting the modules to work.
RC.LOCAL START-UP SCRIPT
This script should enable everything at boot time and should make Ubuntu easier to use on gen8 tablets. It starts WiFi and Bluetooth as well as enables USB charging.
Code:
#!/bin/sh -e
#
# rc.local
#
#MAC_ADDRESS='00:22:33:44:55:66'
MAC_ADDRESS=`cut -f3 -d" " /media/data/system/persist.archos.WIFI_mac`
ifconfig wlan0 hw ether $MAC_ADDRESS
ifconfig wlan0 up
modprobe btwilink
sleep 10
hciattach /dev/ttyS0 texas 3000000
/etc/init.d/network-manager restart
echo 1 > /sys/devices/platform/battery/usb_online
echo 3 > /sys/devices/platform/battery/charge_level
exit 0
You must have /media/data mounted in your /etc/fstab file, the entry should look like this:
Code:
/dev/mmcblk1p4 /media/data ext3 defaults 0 0
If this entry isn't in /etc/fstab, the /media/data partition will not be available at the time rc.local is run, and it will fail trying to read the MAC address. Alternatively, you can uncomment the hard-coded MAC address and use that but it's not as clean.
First off, Thanks for the effort you've put in, I just cant wait to get this up and running on my 101. Hopefully I'll have some time this weekend to sort it out but I've questions, How well does it perform? Is unity actually working? & have you tried any other distros? The reason i ask is because i was gonna buy a linux tab running plasma active but if i could eventually run it reasonably well on my 101 i'd hold out and save a couple.
Cheers again and nice work.
It runs fairly well. Unity works (2D only at the moment, not 3D), but whether that's a good thing or not I'll leave up to you (personally I don't like the Unity interface at all, and I find it slow when in 2D mode). I have GNOME 3.0 Fallback installed which runs pretty smooth and fast as it is fairly lightweight. You can use any non-3D-accelerated interface at the moment (Xfce, fluxbox, LXDE, MATE/GNOME2, etc). I've heard of people running plasma active on other non-accelerated systems (including the HP TouchPad, which is where I got my starting image). I haven't bothered as I prefer a traditional desktop-style interface.
That said, if you're willing to test I'd love feedback on how this performs on A101. I don't have an A101 and I am not sure of the status of A101 support. I'm taking Nicktime's word for it that the kernel supports A101. The actual Ubuntu image should be pretty independent of the device but the kernel needs to specifically support each individual board.
To start I'd just download the TouchPadBuntu rootfs I posted (which despite its name doesn't have anything TouchPad related in it and should at very least boot to login screen on the Archos 2.6.37 kernel without modifications). I'll hopefully get a package of modifications up soon including drivers for WiFi, Bluetooth, and a script to get everything running properly at boot.
As for 3D acceleration, I think it should be possible. There are apparently user-space drivers for OMAP3 that will work under Ubuntu. The bigger issue is getting a version of Compiz/Unity3D/Gnome Shell/whatever accelerated desktop you prefer that is compile for OpenGL ES.
Hey dude, could you give me some instructions as to how you installed the roofs.tgz to the memory card? I've got the new boot loader installed and I'm mad to get this going this weekend. Cheers in advance.
P.s. if there is a link to a tut for it that'd be excellent because I don't mind searching for myself just couldn't find any info on it. Thanks.
EDIT:
First post updated, see it for full installation details and feel free to post any questions or problems you have during or after installation. I really want to know how well this plays on A101 devices, as I don't have one to test with. Also, anyone with kernel experience that wants to take on adding additional devices, go for it! It would be great to get A70 support at least, as that is a popular device that has seen Debian/Angstrom activity in the past.
I tar'd the files to the sdcard, created a folder inside OS called ubuntu and placed the zimage & intramfs inside but it wont boot? I probably missed something so feel free to tear me one .
Wasn't even thinking...Duh...the kernels provided assume the root device is /dev/mmcblk2p3 (my Ubuntu partition on internal SD card). You probably want /dev/mmcblk0p1 (first partition on external SD card). I'll build a new kernel and post it soon, or you can take a shot at compiling your own kernel (my GitHub sources need work, for now I'd go with Nicktime's sources at Gitorious as I realized I broke some things).
Kboot should have a cmdline option where you can specify a kernel command line (and thus a root device) but I couldn't get it to work. To clarify, you ARE seeing the kernel boot messages right? If you aren't then kboot probably isn't set up correctly. Try booting another kernel (such as OpenAOS boot menu) from kboot and see if that works.
EDIT: here
CalcProgrammer1 said:
As for 3D acceleration, I think it should be possible. There are apparently user-space drivers for OMAP3 that will work under Ubuntu. The bigger issue is getting a version of Compiz/Unity3D/Gnome Shell/whatever accelerated desktop you prefer that is compile for OpenGL ES.
Click to expand...
Click to collapse
I know they
http://www.linaro.org/
are working on the Open GL ES port of Unity 3D.
Maybe u can find some sources there
And KDE should also have a builf of KDE Plasma wiht OpenGL ES.
Maybe you could add it? would be awesome.
Archos 70
Does/Will this work on the Archos 70? I'm trying to get it working but all I'm getting is static on my screen when Kboot tries to boot Ubuntu. This could be my fault and I could have just messed up the installation but I don't think so.
Thoughts?
shrewdlove said:
Does/Will this work on the Archos 70? I'm trying to get it working but all I'm getting is static on my screen when Kboot tries to boot Ubuntu. This could be my fault and I could have just messed up the installation but I don't think so.
Thoughts?
Click to expand...
Click to collapse
If you read the first post, you will see that this currently only works with A43 and A101. This is due to the kernel I'm using, which was ported by an OpenAOS user who hasn't been active in 6 months. Chances of him resuming his project are slim, so I've forked his kernel progress but don't have an A70 to work with. I could attempt to add A70 support to the kernel but I would be blind to the progress and would need testers. There aren't a ton of changes necessary, mainly just need to add the right LCD driver to make the screen work and then update the board file with the changes that have been made to the A43/A101 boards.
Unfortunately, I don't have much time as of late, I've got a senior design project and school work to deal with, plus I've been working on getting CM9 ICS to compile for gen8, and I've also been working on the HP TouchPad Ubuntu port. Adding A70 support to the kernel is low priority for me, but if any A70 owners want to take a stab at the kernel go right ahead, I'll gladly accept changes to the kernel. As far as Gen8 Ubuntu is concerned, my current focus is getting the SGX GPU up and running with TI's Graphics SDK. If successful, this GPU should be able to run hardware-accelerated Unity 3D and Compiz for a fast, fancy desktop experience.
shrewdlove said:
Does/Will this work on the Archos 70? I'm trying to get it working but all I'm getting is static on my screen when Kboot tries to boot Ubuntu. This could be my fault and I could have just messed up the installation but I don't think so.
Thoughts?
Click to expand...
Click to collapse
I've the exact same problem with my 101, at first I thought it was an issue with kboot but its able to boot uruk and bull. Every time I choose to run ubuntu it stalls with a static on the screen and I have to force a re-boot. I'm using a 2GB sd with only one partition if thats any help and the zimage in question is the one for boot from sd.
Any input?
Oh! Just looked at my kernel configuration again and I forgot to enable A101 support in the configuration file. I'll build a new kernel later today with A101 support enabled! Sorry about that. Should fix A101 but A70 still needs some real work before it will be supported.
EDIT:
Here it is
http://www.box.com/s/18d0e43877b5877ce79f
CalcProgrammer1 said:
Oh! Just looked at my kernel configuration again and I forgot to enable A101 support in the configuration file. I'll build a new kernel later today with A101 support enabled! Sorry about that. Should fix A101 but A70 still needs some real work before it will be supported.
Click to expand...
Click to collapse
Dude, don't apologize. I, and this community, appreciate what your doing. I'd love to have the knowledge to compile my own kernel and have a fully functional distro on this device, but I don't yet have that ability. You do, so any time you give up your time and effort to provide us with something new and cool is fricking brilliant. Keep working and let us know how you get on, but don't cause yourself too much hassle.
Thanks.
I've updated my previous post with an image with A101 support included. I have no way to test it. If any A101 users could take a short video or picture of the device booting Ubuntu I would like to see how it works on that device. I've also looked a bit into A70 support and it looks like the necessary modifications would be relatively straightforward, seeing as all the gen8's have essentially the same core hardware (OMAP3, Wolfson Audio, WL1271 WiFi/BT, MicroSD, POWER/VOL+/-, Power LED, etc). The primary difference (and probably most significant code change required) is the LCD panel, but seeing how the A43 got the short end of the stick on this one, the A70 should be easier to port (A43 has a DSI-interfaced serial LCD while the other gen8's have a DPI parallel LCD, DSI support is flaky at best in this kernel release).
Managed to get it to boot to ubuntu login screen but my usb keyboard doesnt get picked up, I dont know if the touch screen should register at this point but for me it doesnt. I've no bt keyboard but I can't see the device when I scan for bt from my phone either. If you want, I can take a vid of it booting to this point and send it to you. Just in case I get it to work, what are the login details (password) ?
The login is ubuntu/ubuntu (user/pass). I haven't tested the USB yet, and I'm not sure how the A101's host port is set up (the A43 supports USB OTG host but has no dedicated host port). It is a kernel issue for sure. As for the touchscreen, the A101 I think uses a USB touchscreen, so again with the USB issue. You can try forcing automatic login by modifying one of the files on the rootfs (would have to look up which one, can't remember, but should be possible). The fact that it boots is great and the fact that the panel works is also great. I'll look into USB host some more when I get a chance.
Cheers for getting back to me. Is there anyway we can pull something from either the bodhi image or android itself? or would it have to be changed at the kernel?
Pretty sure this is kernel level, the USB driver is being compiled differently than on the stock kernel (musb_hdrc should be a module, but this kernel it is built in, preventing you from loading in different modes). I booted up my A43 with a USB mouse attached, the kernel detected the mouse but then disconnected it before it could be used.
Hi,
Firstly, installing desktop OS's of whatever sort on the Android version (YB1-X90F), insofar as anyone has managed it, is a completely different process and none of what follows is likely to be relevant.
Secondly, it should go without saying that any use of the linked ISO or the information in this post is entirely at your own risk.
There are several threads on xda and elsewhere dealing with attempts to install Linux on the Windows version of the Yoga Book (YB1-X91F). They're pretty consistent in terms of results, both with each other and my own attempts. I have tried the latest and previous LTS or main releases Debian, Ubuntu (all flavours), Mint and Fedora.
Between mine and others' attempts, most distros have the following working, using a Live ISO flashed to USB:
- Boot to desktop and successful install to eMMC
- Display
- Graphics pad responds to touches, but not aligned with screen rotation and probably in need of other calibration.
- USB, including ethernet-to-USB adapter
Some distros/versions additionally have:
- Touchscreen (only newer kernels, I think 4.13 onwards but definitely 4.15 onwards)
- Sound via HDMI
- Not sure about Bluetooth - possibly
The following didn't work with any distos/versions:
- A lot of the ACPI subsystem, meaning that some ICs (e.g. SD Card) don't receive power.
- Wifi
- SD Card
- Sound via headphones or speakers
- Halo Keyboard
- Touchscreen multitouch
- Battery gauge
- OS control of battery charger IC, though the IC sits in autonomous mode so the device still charges
- Display brightness adjustment (always set to max)
- Display auto-rotate
The Mint ISO linked at the end of this post has WiFi, the SD Card, two-finger right click and brightness adjustment working in addition to the OOTB functionality. I've made a lot of progress on the sound - the driver and codec load but it needs some configuration. I have read elsewhere that configuring this incorrectly can blow your speakers which is why I haven't tackled it yet.
The Halo keyboard doesn't work yet, so the Yoga Book can't be used in laptop mode for now. The only real barrier to using it in tablet mode is the lack of a functioning battery gauge. More on this below.
Instructions:
You will need a USB flash drive of at least 2GB, a USB keyboard and mouse and therefore a USB hub as well as a way of attaching it to the micro-usb port. I use an OTG adapter which came with a Samsung phone.
The touchscreen does not work when the Live ISO boots but it does work after installation.
Once Linux is installed on the eMMC, the firmware will boot to GRUB by default rather than Windows. To boot into Windows you have to enter the firmware menu. This should be easy to fix/reconfigure but I haven't got round to it yet. I need to get the volume and power keys working in GRUB first.
- Download the ISO from the link below and flash to USB. I use Etcher on MacOS which flashes in a dd-like manner (other tools make their own changes to the target drive to make it bootable - this isn't needed or desirable).
- Turn off hibernate, fast boot and secure boot in Windows. There are easily found guides on how to do this. It ought to be possible to retain secure boot but I have found doing so a real headache on other systems so didn't try in this case.
- Turn off any secure boot settings in the device firmware (access the menu by powering on with the volume up button pressed down).
- Using the firmware menu, boot from the flashed USB drive. When the desktop boots, use GParted to shrink the Windows partition, leaving at least 11GB (Mint says it needs 10.7GB). I've been messing around with Linux for months now on the YB and have found 11 enough.
- Run the desktop installer. At the partitioning menu, choose 'Something else'.
- Create a new Ext4 partition using all of the free space created previously and map it to '/'.
- Ignore any warnings about a swap partition. If you get stuck on a dialog about forcing a UEFI install, open a terminal and run 'killall ubiquity' then run the installer again with the network connection turned off. If the install doesn't work, you may have to risk the default 'Install Mint alongside Windows....' option. I have never had a problem with this, but I don't quite trust it, or indeed the installer in general.
- If you fail at the point of GRUB install, go back and start again with networking disabled.
- Just reboot as normal.
Changes from Stock ISO (probably not exhaustive)
- New ISO using 18.3 Cinnamon as a base using Cubic
- Updated, inc dist-upgrade as of 6 Sept 18
- Missing Broadcom firmware (for WiFi) added.
- Additions to /etc/skel/.config to put Mint into HiDPI mode
- Florence on screen keyboard added and loads on start
- Touchegg, which enables two-finger right click added and loads on start.
- LightDM settings changed to enable Florence and HiDPI
- Most importantly, a custom kernel (4.18.5) which is responsible for most of the above-OOTB functionality. Some of this is just about enabling the correct Atom ACPI ICs, other bits relate to load order (to get past the lack of brightness control).
Help!
- I really need some help with the battery gauge IC. For now, dmesg is the best bet but I'll follow up with another post with more detail.
- There are other things which need doing, e.g. the keyboard and finishing off the sound but these are relatively straightforward by comparison. The gauge/charger setup is the last low level thing not working.
Custom ISO:
This is my first post. I can't post links! Remove the spaces and ..... :
drive.google.com/ .... open? .... id=1-5vtnKAVpERmzTFIR3TGXe1DgvoFvehc
Help Needed - Battery Gauge/Charger
The issue
The following can be seen by running 'dmesg' after boot using the ISO in my first post, which uses a 4.18 kernel customised for the hardware in the Yoga Book.
The kernel attempts to load the driver for the TI bq24190 battery charger IC. I'm not yet able to post links so search for 'bq24190_charger.c' in the Linux kernel Github repo. The driver throws an error on boot when it hits this code at line 1640. It's expecting a 6 and it gets a 4, the value of BQ24190_REG_VPRS_PN_24190.
bq24190_charger.c
Code:
if (v != BQ24190_REG_VPRS_PN_24190 &&
v != BQ24190_REG_VPRS_PN_24192I) {
dev_err(bdi->dev, "Error unknown model: 0x%02x\n", v);
return -ENODEV;
}
If I remove this check altogether and re-compile the module then the driver proceeds to load but reports zeroes for all status values. It's not clear whether it is, in fact, the right chip and isn't talking to the rest of the hardware or it's simply the wrong driver.
However, at least removing this check allows the Whiskey Cove ACPI IC driver to get a bit further along. Search for 'intel_cht_int33fe.c' in the kernel source. Comments in this file (line 124) confirm that this IC is expected to be paired with a bq24190.
By adding in dmesg warnings and re-compiling the int33fe module I could see that when an unmodified bq24190 driver is used, i.e. the check above takes place and is failed, the int33fe driver fails its own check at line 138:
intel_cht_int33fe.c
Code:
regulator = regulator_get_optional(dev, "cht_wc_usb_typec_vbus");
if (IS_ERR(regulator)) {
ret = PTR_ERR(regulator);
return (ret == -ENODEV) ? -EPROBE_DEFER : ret;
}
regulator_put(regulator);
When I remove the check, it fails at the next check starting at line 145:
Code:
/* The FUSB302 uses the irq at index 1 and is the only irq user */
fusb302_irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 1);
if (fusb302_irq < 0) {
if (fusb302_irq != -EPROBE_DEFER)
dev_err(dev, "Error getting FUSB302 irq\n");
return fusb302_irq;
}
I have tried various combinations of including the FUSB driver and dependencies as modules/built in but the result is the same. I also tried moving the FUSB check to after the code which tries to link up with the max17047 battery gauge IC, but this fails also.
Some owners of the Android version of the Yoga Book have posted files/screenshots on Telegram which indicate that a different charger, the bq25892 is used. As far as I know i2c devices are simply identified by the fact that they occupy a certain address on the bus. You can see in the datasheet for the bq24190 (sorry, no links!) on page 3 that it uses i2c address 6BH. The datasheet for the bq25890/2 shows on page 5 that the bq25892 also uses 6BH.
I don't know enough about i2c to know whether this is the issue, or how to point Linux to a different driver in the way that you might using a VIDID for a USB or PCI device? It would be really helpful if anybody could definitively confirm which chip we are dealing with.
Some final ACPI errors crop up towards the end of the dmesg output (I've cleared all the others) and I suspect that sorting this will clear them, as well as making the Yoga Book with Mint usable in Tablet mode.
Other things which need fixing:
- There are sound errors in the dmesg output but it also shows that the drivers and codec are loading properly. I can see all the devices which should be visible in amixer from the command line. Because getting the config wrong can blow speakers I've resisted tackling this until I've done further research but if anyone has a solution please let me know.
- Halo Keyboard. This needs either a kernel module to be written or a software layer which runs at least under X. I don't expect this to be hugely difficult - Linux can see the Halo as a wacom graphics pad and take input, albeit not deal with it properly yet. There's also a mystery, generic HID device which by process of elimination must be the button/backlight. However, the generic HID driver loads so it shouldn't be too hard to work out how to talk to it.
- I re-built the ISO using Cubic. When I have tried to make ISOs which use my custom kernel to boot the ISO itself, they don't work. I get garbled graphics and the boot stalls. This is why the touchscreen doesn't work when you live boot (which uses 4.10) but does when you install (because it uses 4.18). This ought not to be insurmountable but I haven't cracked it yet. I've tried doing it manually and using the Debian live-boot commands for both Debian/Ubuntu. Still no luck.
- Until I can get a custom ISO to boot from a custom kernel it won't be possible to install on the SD Card. Otherwise, there's no reason this shouldn't be possible.
- It should be possible to install to another USB device now, but I haven't tried yet. Make sure to use the disable MMC script on the desktop if you don't want to install Grub EFI on the eMMC. Ubuntu and derivatives ignore whatever you choose for this and just use the fist EFI partition they find. Amazingly this bug has been there since 2014!
- It ought to be possible to map the hardware buttons (volume, power) to specific keys in Grub, possibly using a locale. This would allow selections to be made without a keyboard.
android install
This might be related as I was just installing windows on Android version and now reverted back (https://forum.xda-developers.com/showpost.php?p=77556606&postcount=44), couple of observations that might help you: On android reinstall back it required to activate halo keyboard to get it working again, there was a phone code entered into the search bar to get it activated which triggered something called easyimage app. In android stock image you can actually find easyimage.zip which I guess is this "fake android update" to install the halo keyboard. Inside the zip are *.so libraries and some files related to halo keyboard and ink pen so you could try to play with those to get it working under classic Linux.
DNX mode allows to boot EFI via a USB cable &*fastboot (I guess windows version have also this as I activated it somewhere in BIOS?) so this can be also alternative version of booting an OS. IMHO Grub can also chainload iso image directly (I did it in past on normal PC, it was a couple of years ago so I can't find the guide to do it now) so in theory you can just place the Linux ISO image as a normal iso file on disk and tell GRUB to chainload that directly. Since it's possible to revert the Windows installation back to Android it might even be possible to dualboot. Android bootloader is also EFI based (kernelflinger) so you could also play with that. TWRP recovery image have full touch support for screen so that might be also a help when digging for configuration or extracting it from the sources.
intense.feel said:
...you can actually find easyimage.zip which I guess is this "fake android update" to install the halo keyboard. Inside the zip are *.so libraries and some files related to halo keyboard and ink pen so you could try to play with those to get it working under classic Linux.
Click to expand...
Click to collapse
This is really helpful, thank you. I'll have a look at what's there.
Still no progress with the battery gauge...
intense.feel said:
This might be related as I was just installing windows on Android version and now reverted back (https://forum.xda-developers.com/showpost.php?p=77556606&postcount=44), couple of observations that might help you: On android reinstall back it required to activate halo keyboard to get it working again, there was a phone code entered into the search bar to get it activated which triggered something called easyimage app. In android stock image you can actually find easyimage.zip which I guess is this "fake android update" to install the halo keyboard. Inside the zip are *.so libraries and some files related to halo keyboard and ink pen so you could try to play with those to get it working under classic Linux.
DNX mode allows to boot EFI via a USB cable &*fastboot (I guess windows version have also this as I activated it somewhere in BIOS?) so this can be also alternative version of booting an OS. IMHO Grub can also chainload iso image directly (I did it in past on normal PC, it was a couple of years ago so I can't find the guide to do it now) so in theory you can just place the Linux ISO image as a normal iso file on disk and tell GRUB to chainload that directly. Since it's possible to revert the Windows installation back to Android it might even be possible to dualboot. Android bootloader is also EFI based (kernelflinger) so you could also play with that. TWRP recovery image have full touch support for screen so that might be also a help when digging for configuration or extracting it from the sources.
Click to expand...
Click to collapse
I'm currently doing on that without the Hardware. my plan is to find the small / light weight linux kernel and port the driver of the HALO. I call this Project HALO port (not on github cuz I just gathering everything until I ready). right now I'm learning to compile the kernel because I never do that (3 years on linux xD). I hope soon I can figure out the protocol it did uses for the HALO (My guess is I2C/SMBus).
Update : I found someone on github just build custom Debian ISO to deploy on USB flash drive and be able to use HALO keyboard (A.K.A Yeti, based on Goodix gt9xx chip). This is his work on github
Woah this is amazing progress! I haven't been on the forums for a while; been working mostly on messing with Windows to make it more efficient and responsive lol.
jimnarey said:
The issue
The following can be seen by running 'dmesg' after boot using the ISO in my first post, which uses a 4.18 kernel customised for the hardware in the Yoga Book.
The kernel attempts to load the driver for the TI bq24190 battery charger IC. I'm not yet able to post links so search for 'bq24190_charger.c' in the Linux kernel Github repo. The driver throws an error on boot when it hits this code at line 1640. It's expecting a 6 and it gets a 4, the value of BQ24190_REG_VPRS_PN_24190.
bq24190_charger.c
Code:
if (v != BQ24190_REG_VPRS_PN_24190 &&
v != BQ24190_REG_VPRS_PN_24192I) {
dev_err(bdi->dev, "Error unknown model: 0x%02x\n", v);
return -ENODEV;
}
If I remove this check altogether and re-compile the module then the driver proceeds to load but reports zeroes for all status values. It's not clear whether it is, in fact, the right chip and isn't talking to the rest of the hardware or it's simply the wrong driver.
However, at least removing this check allows the Whiskey Cove ACPI IC driver to get a bit further along. Search for 'intel_cht_int33fe.c' in the kernel source. Comments in this file (line 124) confirm that this IC is expected to be paired with a bq24190.
By adding in dmesg warnings and re-compiling the int33fe module I could see that when an unmodified bq24190 driver is used, i.e. the check above takes place and is failed, the int33fe driver fails its own check at line 138:
intel_cht_int33fe.c
Code:
regulator = regulator_get_optional(dev, "cht_wc_usb_typec_vbus");
if (IS_ERR(regulator)) {
ret = PTR_ERR(regulator);
return (ret == -ENODEV) ? -EPROBE_DEFER : ret;
}
regulator_put(regulator);
When I remove the check, it fails at the next check starting at line 145:
Code:
/* The FUSB302 uses the irq at index 1 and is the only irq user */
fusb302_irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 1);
if (fusb302_irq < 0) {
if (fusb302_irq != -EPROBE_DEFER)
dev_err(dev, "Error getting FUSB302 irq\n");
return fusb302_irq;
}
I have tried various combinations of including the FUSB driver and dependencies as modules/built in but the result is the same. I also tried moving the FUSB check to after the code which tries to link up with the max17047 battery gauge IC, but this fails also.
Some owners of the Android version of the Yoga Book have posted files/screenshots on Telegram which indicate that a different charger, the bq25892 is used. As far as I know i2c devices are simply identified by the fact that they occupy a certain address on the bus. You can see in the datasheet for the bq24190 (sorry, no links!) on page 3 that it uses i2c address 6BH. The datasheet for the bq25890/2 shows on page 5 that the bq25892 also uses 6BH.
I don't know enough about i2c to know whether this is the issue, or how to point Linux to a different driver in the way that you might using a VIDID for a USB or PCI device? It would be really helpful if anybody could definitively confirm which chip we are dealing with.
Some final ACPI errors crop up towards the end of the dmesg output (I've cleared all the others) and I suspect that sorting this will clear them, as well as making the Yoga Book with Mint usable in Tablet mode.
Other things which need fixing:
- There are sound errors in the dmesg output but it also shows that the drivers and codec are loading properly. I can see all the devices which should be visible in amixer from the command line. Because getting the config wrong can blow speakers I've resisted tackling this until I've done further research but if anyone has a solution please let me know.
- Halo Keyboard. This needs either a kernel module to be written or a software layer which runs at least under X. I don't expect this to be hugely difficult - Linux can see the Halo as a wacom graphics pad and take input, albeit not deal with it properly yet. There's also a mystery, generic HID device which by process of elimination must be the button/backlight. However, the generic HID driver loads so it shouldn't be too hard to work out how to talk to it.
- I re-built the ISO using Cubic. When I have tried to make ISOs which use my custom kernel to boot the ISO itself, they don't work. I get garbled graphics and the boot stalls. This is why the touchscreen doesn't work when you live boot (which uses 4.10) but does when you install (because it uses 4.18). This ought not to be insurmountable but I haven't cracked it yet. I've tried doing it manually and using the Debian live-boot commands for both Debian/Ubuntu. Still no luck.
- Until I can get a custom ISO to boot from a custom kernel it won't be possible to install on the SD Card. Otherwise, there's no reason this shouldn't be possible.
- It should be possible to install to another USB device now, but I haven't tried yet. Make sure to use the disable MMC script on the desktop if you don't want to install Grub EFI on the eMMC. Ubuntu and derivatives ignore whatever you choose for this and just use the fist EFI partition they find. Amazingly this bug has been there since 2014!
- It ought to be possible to map the hardware buttons (volume, power) to specific keys in Grub, possibly using a locale. This would allow selections to be made without a keyboard.
Click to expand...
Click to collapse
Not sure if you've seen, but this issue on the above GitHub project that has managed to get the battery gauge working says they're using the BQ27542.
https://github.com/jekhor/yogabook-linux-kernel/commit/f0b7662fa10f012410170c241a9fa91295f54dc1
Hi, I am the author of the repository mentioned above, https://github.com/jekhor/yogabook-linux. My linux porting efforts were focused at kernel, getting battery charger driver and halo keyboard working basically. So, this kernel supports the battery gauge, battery charger (with fast charging mode, yes!). For halo keyboard patch for the goodix touchscreen (touchpad really) kernel was needed, see the https://github.com/jekhor/yogabook-linux-kernel/commit/bd3a5953126fd87e4218550c5a31baafcdc60a38 commit. There is userspace keyboard driver in the Chromium OS which converts touchpad events into keypresses. Forked version suitable for build at GNU\Linux system is here: https://github.com/jekhor/chromiumos_touch_keyboard .
Some patches were accepted to the mainline Linux already:
0e116237aa42 extcon-intel-cht-wc: Make charger detection co-existing with OTG host mode (v5.1)
ff6cdfd71495 ACPI / x86: Make PWM2 device always present at Lenovo Yoga Book (v5.1)
236c765d6abc mfd: intel_soc_pmic_chtwc: Register LED child device (v5.2)
a72a1be0de71 extcon: intel-cht-wc: Enable external charger (v5.2)
Feel free to ask me about this work and to create github issues. This is my spare time project, so I will glad to see other developers connected.
nice project dude was trying it today and touchscreen works good so far,
but i cant get the halo keyboard to work, if i try to use it my mouse only moving from left to right and right to left.
if i can help you with creating some logs or something else, just write me i'm not rly good on linux, but i want to use it on this low power device
edit: and yes i tried to reload the kernel modules (if modprobe is the correct command) but no change
i dont know if the problem is maybe that i have a germany keyboard layout, changing in the menu works for my hw keyboard but on the halo no difference still only mouse movement
blgblade said:
nice project dude was trying it today and touchscreen works good so far,
but i cant get the halo keyboard to work, if i try to use it my mouse only moving from left to right and right to left.
if i can help you with creating some logs or something else, just write me i'm not rly good on linux, but i want to use it on this low power device
edit: and yes i tried to reload the kernel modules (if modprobe is the correct command) but no change
i dont know if the problem is maybe that i have a germany keyboard layout, changing in the menu works for my hw keyboard but on the halo no difference still only mouse movement
Click to expand...
Click to collapse
Hmmm... You are second people who reports such problem with this image. What YB version you have? I have YB1-X91L only.
Could you please post an output of the command 'sudo cat /sys/class/dmi/id/*' (use external keyboard for this)?
---------- Post added at 10:36 PM ---------- Previous post was at 10:30 PM ----------
Arghhh... I have lost one part of goodix touchscreen driver patch and keyboard will works only at YB1-X91L model (not X91F). Wil be fixed.
jekhor said:
Hmmm... You are second people who reports such problem with this image. What YB version you have? I have YB1-X91L only.
Could you please post an output of the command 'sudo cat /sys/class/dmi/id/*' (use external keyboard for this)?
---------- Post added at 10:36 PM ---------- Previous post was at 10:30 PM ----------
Arghhh... I have lost one part of goodix touchscreen driver patch and keyboard will works only at YB1-X91L model (not X91F). Wil be fixed.
Click to expand...
Click to collapse
yep i have a YB1-X91F
ok nice, than i will wait for the next release
i found out 2 things that did not work (or not correctly or i'm to stupid xD)
- sound (but i allready see the post in issues )
- the gui and if i tried video it looks like there is no graphic driver installed (dont know how to specify this, but if i just move a window it looks like software rendering, ok my english should be better to explain this but i hope you know what i mean ^^)
if i found something more i will give you feedback
but for now, its rly nice work
thank you so much for this project
here the output from the command above
Code:
08/26/2016
LENOVO
04WT18WW
NO Asset Tag
INVALID
HA0QPQ1T
LENOVO
Not Defined
NO Asset Tag
HA0QPQ1T
11
LENOVO
X91F
dmi:bvnLENOVO:bvr04WT18WW:bd08/26/2016:svnLENOVO:pnLenovoYB1-X91F:pvrX91F:rvnLENOVO:rnINVALID:rvrNotDefined:cvnLENOVO:ct11:cvrX91F:
cat: /sys/class/dmi/id/power: Is a directory
(TBD)
Lenovo YB1-X91F
HA0QPQ1T
LENOVO_BI_04_PCG_FM_YB1_X91F
41564e49-494c-0044-0000-000000000000
X91F
cat: /sys/class/dmi/id/subsystem: Is a directory
LENOVO
MODALIAS=dmi:bvnLENOVO:bvr04WT18WW:bd08/26/2016:svnLENOVO:pnLenovoYB1-X91F:pvrX91F:rvnLENOVO:rnINVALID:rvrNotDefined:cvnLENOVO:ct11:cvrX91F:
blgblade said:
yep i have a YB1-X91F
ok nice, than i will wait for the next release
i found out 2 things that did not work (or not correctly or i'm to stupid xD)
- sound (but i allready see the post in issues )
- the gui and if i tried video it looks like there is no graphic driver installed (dont know how to specify this, but if i just move a window it looks like software rendering, ok my english should be better to explain this but i hope you know what i mean ^^)
if i found something more i will give you feedback
but for now, its rly nice work
thank you so much for this project
[/CODE]
Click to expand...
Click to collapse
I have uploaded fixed iso (halo keyboard should work): https://github.com/jekhor/yogabook-linux/releases/tag/livecd-test3.1
Yes, no sound, no force-feedback for keypresses.
Don't know about video driver and acceleration, need to check.
jekhor said:
I have uploaded fixed iso (halo keyboard should work): https://github.com/jekhor/yogabook-linux/releases/tag/livecd-test3.1
....
Click to expand...
Click to collapse
yes, the keyboard is now working, nice thank you
i will follow your progress and try to help if i can ^^
hey all, because @jekhor is using a diffrent keyboard layout (not only mapping are diffrent) i created a modified layout.csv
(on this page --> https://forums.lenovo.com/t5/Yoga-Book-Windows/Yoga-book-Window-keyboard-layout-wrong/td-p/3705108 <-- you will see the layout diffrences)
layout.csv as attachmant (as txt because csv is not allowed ^^)
changes:
- Enter key diffrent size
- # moved to the other position
- added the > < | key (dont know the name )
- LeftShift key diffrent size
edit: i created a patch for the filesystem.squashfs file, just unpack the patcher in the /live/ folder on your stick and run it or run it ffrom any location you want and choose the live folder from the app, than you can use the keyboardlayout on the livesystem (sorry, the patcher is windows only)
Thanks for all the hard work
Hey all, just came across this thread recently - really appreciate all the hard work here. I've been trying to install Ubuntu on my Windows powered YogaBook since the beginning, and am amazed at how far your efforts have come. Looking forward to the completed product later on! Can't stand Win10 as it tends to bloat and slowdown. Hopefully Linux runs better on this thing.
Thxxx man
Love the level of involvement in this adforable and light device with great potential in linux
Hope u guys dont lose patience in the development.
Once the wifi, keyboard and touch screen is aredy, i think i will fully change my android yogabook into linux.......
---------- Post added at 02:01 PM ---------- Previous post was at 01:56 PM ----------
Love the level of involvement in this adforable and light device with great potential in linux
Hope u guys dont lose patience in the development.
Once the wifi, keyboard and touch screen is aredy, i think i will fully change my android yogabook into linux.......
Thanks for the effort
Thanks again, all for the effort.
Has there been any progress made so far?
It has been more than 2 full years, one in this forum has been able to achieve in only a few weeks of coding what MOST of us have tried to achieve in years. He has uploaded his ISO of Debian with many things working, however some things are left to be desired : Resume keyboard (tried with script - failed), fix for keyboard keys layout, and the resolution (worked with XRANDR script : working). However, he does not seem either interested in going further or does not have the device to compile against, either way without him we could be stuck with WinBlows on this machine. Until we get him BACK on board, we are stuck in the water... @jekhor ?
Jeff said:
It has been more than 2 full years, one in this forum has been able to achieve in only a few weeks of coding what MOST of us have tried to achieve in years. He has uploaded his ISO of Debian with many things working, however some things are left to be desired : Resume keyboard (tried with script - failed), fix for keyboard keys layout, and the resolution (worked with XRANDR script : working). However, he does not seem either interested in going further or does not have the device to compile against, either way without him we could be stuck with WinBlows on this machine. Until we get him BACK on board, we are stuck in the water... @jekhor ?
Click to expand...
Click to collapse
RN, I use the systemd to fix keyboard resume and very soon I will working on sound driver totally ported from android kernel. Plus I can get the haptic feedback to (partially) works only random left or right motor via using udev rule. Extra, the recent kernel added support for the front facing camera (ov2740).