[DEV] Multiboot Linux on Infinity tf700 (project closed)

Search This thread

rabits

Senior Member
Nov 25, 2012
184
430
St.Petersburg
Developers thread for users general.

I will post here some external links and additional information.

GitHub tf700 Repository - place for config files and step-by-step manual to create you own kernel and rootfs
GOO.IM file place
Tablet PPA for Raring

Changed packages is placed in /root/deb directory.

Known problems: (nexus7 wiki, mattfischer blog post, nexus7 bugs)
  • Unity has some problems with performance and ram eating - this is place for optimizations.
  • In-device microSD really bad works.
  • WiFi disabling is fail bcmdhd kernel module.
  • vt1-only, if you try to switch to vt* (`chvt 2`) - your device is freezes and reboot.
  • To use unity you need nux-tools, libnux-3.8-0 and libnux-3.8-common with version 3.8.0-0ubuntu1nexus7.1 (this packages are hold)
  • Sometimes I can see really bad artifacts with fonts and background on the device screen (mostly if using chromium browser). Only reboot fixes it.

Progress list:
  • Test Linux boot {DONE}
  • SDCard rootfs {DONE}
  • Graphical boot{DONE}
  • Keyboard special keys remapping (Esc, F1-12, Ins, Print, Break, Del, Home->Alt, Search->Meta4) {DONE in 0.8.0}
  • WiFi {DONE}
  • OpenGL ES {DONE}
  • Audio {DONE} In pavucontrol as output device selected Analog Stereo Output, in alsamixer (tegra-codec) unmute IntSpk
  • Video up to 1080p {DONE} (ac100 info) - Soft audio requires gstreamer0.10-plugins-*
    • nvgstplayer --sas="audioconvert ! pulsesink" -i <videofile> - Fullscreen mode
    • nvgstplayer --svs="nvxvimagesink" --sas="audioconvert ! pulsesink" -i <videofile> - Window mode
  • Touchscreen {DONE in 0.7.0} - used mtev one-touch driver 0.1.13 with api and 2button patches - right click by push one finger and click by second finger (thanx, cb22)
  • Touchpad {DONE in 0.6.1}
    • 2 fingers scrolling {DONE}
    • 3rd mouse button by 2 finger tap {DONE 0.6.1} - created new version of package multitouch "-swaptaps"
  • Updated tegra3 drivers and codecs to 16.2 {DONE in 0.6.1}
  • Ubuntu/Android dualboot {DONE in 0.7.0}
    • Initrd bootloader trying to boot sda1(dock sd cardreader or usb device), mmcblk1p1(internal microsd cardreader), sdb1 (dock sd cardreader or usb device), mmcblk0p9(inernal device), /data/media/tf700-rootfs-linux.img(in-device installed virtual disk) (0.7.0)
    • If it can't load linux - fallback to Android (0.7.0)
    • Boot android if voldown (or special, like Up key) key pressed in menu (0.7.0)
    • Fixed nvavp problem in android (0.7.0)
    • Fixed problems with Android sleeping by unbinding vtconsole before Android boot (0.7.0)
  • Initrd installer to mmcblk0p8 user partition and mount as loop with binding mmcblk0p8 {DONE in 0.7.0}
  • Fonts and cursor size {DONE in 0.8.0}
  • ZIP installer by Aroma {partially}
    • Install of boot image {DONE in 0.7.1}
    • Install script for SDcard-way and Virtual Disk-way {DONE in 0.8.0}
    • Possibility of using mmcblk0p8 /data as /home {DONE in 0.8.0}
    • Dynamical making of boot.blob {DONE in 0.8.1}
    • Select rootfs to boot {DONE in 0.8.1}
    • CM10.1 initrd (link) {DONE in 0.8.1}
    • Android boot from sdcard or virtual drive {DONE in 0.8.1}
    • UbuntuTouch initrd {DONE in 0.8.2}
    • Change boot system names {DONE in 0.8.2}
    • Add option to boot android by default {DONE in 0.8.2}
    • Check md5 of rootfs archive
    • Encryption for linux partition
  • FSCK check & fix rootfs before mounting {DONE in 0.8.2}
  • GPIO keys {partially in 0.8.0}
  • Switch rootfs to 13.4 (link) {partially}
  • Bluetooth
    Try this: /system/bin/brcm_patchram_plus --bd_addr `cat /etc/bluetooth/bt_addr` --enable_hci --enable_lpm --no2bytes --tosleep 50000 --baudrate 4000000 --use_baudrate_for_download --patchram /lib/firmware/bcm4334.hcd --i2s=1,0,0,0 /dev/ttySAC0&
  • Totem and nvgst modules
  • Go to Wayland+Weston+libhybris to use egl android drivers
  • Disable speaker if headphones connected

Additional:

Need help:
  • Suspend to RAM - Not working with X (trace), without X (stop lightdm) - suspended, but not wake.
    1. Wakelock to emmc
    2. Wake up: echo "on" > /sys/power/state or powerbutton (maybe with kernel patching)
  • Totem - now is not working
    gstreamer-properties and set Audio->Output=Custom, Audio->Output->Pipeline="nv_omx_audiosink" and Video->Output=Custom, Video->Output->Pipeline="nvxvimagesink"
  • HDMI copy of screen (any ideas?)
    • Xorg configuration shows blue lines on HDMI screen
    • Not working properly with 1920x1080: `xrandr --output LVDS-1 --auto --output HDMI-1 --mode 1920x1080` - I get "xrandr: Configure crtc 1 failed"
    • Tested on different display with fullhd support - seems like tegra3 drivers problem
    • Works ok with 1280x800:
      xrandr --newmode `gtf 1280 800 60 | tail -n2 | head -n1 | sed 's/ Modeline //'`
      xrandr --addmode HDMI-1 1280x800_60.00
      xrandr --output LVDS-1 --auto --output HDMI-1 --auto
  • HDMI audio (any ideas?)
  • Adobe Flash player (any ideas?)
  • Skype (any ideas?)

List of optimizations:
  • ZRam {DONE}
  • UKSM (Ultra Kernel Samepage Merging) {DONE} (info in Russian)
  • CPU optimizations {partially}
    • Clemsyn OC 1.3 - 1.8ghz 650GPU Kernel {DONE in 0.6.2} - seems like not properly working on AndroidRoot hacked bootloader
  • Boot optimizations {partially}
    • Initrd scripts {DONE in 0.6.2}
    • Kernel modules upgrade from initrd {DONE in 0.7.1}
  • IO optimizations {partially}
    • Some optimizations of filesystem mounting {partially in 0.6.2}
    • Install to device main emmc memory {DONE in 0.7.0}
  • Power optimizations:
    • Screen off on lid
    • RAM Sleep
    • Powersave, Auto and Performance modes

Plans for the future:
  • Prepare common installer for any tegra3 device.

Test builds:
  • Nope

If you can help in development - please, write here.
 
Last edited:

quicknik

Member
Jul 29, 2012
31
11
There are definitely changes between your implementation and Jay's build. It would seem that after reviewing your source code that the major difference is your overall system config and choice of location of rootfs.

The kernels aren't too too different.

you are using noop vs cfq which is understandable since you are using the stock kernel vs CM10
you incorporated less debugging vs debugging (agree with your preference)
you incorporated framebuffer vs no fb
you incorporated zram vs no zram (smart move to help chromium)
your enhancements are much better IMHO.

You are not utilizing the linux for Tegra drivers. I think we could benefit by utilizing the latest version at least for sound. After reviewing the documentation and reviewing the drivers themselves I think we should integrate. That is unless you are trying to have two separate kernels instead of a monolithic kernel that can boot android and linux kind of like "Ubuntu for Android"

Since I have a working nvflash'd tf700 I am working on a dualboot kexec.

I still prefer the monolithic kernel approach for Android and Linux concept though, and make selection during boot as to which environment to go to. Essentially, it is possible to boot the kernel and run a specific environment and end that environment and switch to another environment.

As others have suggested I think we should integrate both into 1 tree and also try to get the tf300 on board because other than their kernel, specific tf700 configs/rules the rest of the rootfs and other portions should be identical.


Sent from my ASUS Transformer Pad TF700T using xda app-developers app
 

rabits

Senior Member
Nov 25, 2012
184
430
St.Petersburg
You are not utilizing the linux for Tegra drivers. I think we could benefit by utilizing the latest version at least for sound. After reviewing the documentation and reviewing the drivers themselves I think we should integrate. That is unless you are trying to have two separate kernels instead of a monolithic kernel that can boot android and linux kind of like "Ubuntu for Android"

You mean - HW sound? I have integrated drivers, because I use modified nexus7 rootfs. Maybe, I wrong...
Also, integration of kernels is too difficult task for me now...

Since I have a working nvflash'd tf700 I am working on a dualboot kexec.

I still prefer the monolithic kernel approach for Android and Linux concept though, and make selection during boot as to which environment to go to. Essentially, it is possible to boot the kernel and run a specific environment and end that environment and switch to another environment.

I also have nvflash by wheele, but for users preparing device for this - is too difficult. Now I already prepared dualboot with same kernel through initrd menu. In 0.6.0 I will release it. I have some problems with integrated cameras, but wifi is now works in android.
I think we have some problems with non-JB androids with this dualboot... But it is simple.

As others have suggested I think we should integrate both into 1 tree and also try to get the tf300 on board because other than their kernel, specific tf700 configs/rules the rest of the rootfs and other portions should be identical.

Applying to tf300 - is good idea. It's a part of integration all tegra3 devices in same Ubuntu installation for pads.
 

singoutout

Senior Member
Sep 8, 2011
157
15
Developers thread for users general.

Test builds:
  • boot.img dualboot initrd Pre-release 0.6.1
    for me dualboot nice works, but I need to change verbosity of kernel output and boot menu more user frendly. If you can try it and write your suggestions - that will be cool.
    • assembly of mini initrd and android JB 4.1.1 (I have CleanROM 2.4 installed on my tf700t).
    • wifi on android is supported (added p4p bcmdhd option), but nvavp can't load fw.
    • boot menu (included linux, android, initrd shell) is showing after kernel loading.


    • I am more than willing to try, but how can I dualboot that first build ? If you provide a few step by step instructions, I am sure a lot of people will try which will help the development by giving several feedbacks.

      I am currently on Clean Rom Inheritance (= CROMI) 2.7.2 which is the latest update in the Clean Rom series. Since you are using 2.4, I guess the steps woul be exactly the same as for you. I am however using Clemsyn kernel. Is the stock kernel required to be able to dual boot ?

      One the OP, Ubuntu seems tobe pretty stable since a lot of features ar working. Is that really the case ? Is compiz already something I could consider using at this point of the developpment or is it still a little bit early ?

      I am really interested in this project and I thank you a million time for starting actively a development allowing us to dualboot Ubuntu. Keep up you awesome work !!! :)
 

rabits

Senior Member
Nov 25, 2012
184
430
St.Petersburg
I am more than willing to try, but how can I dualboot that first build ? If you provide a few step by step instructions, I am sure a lot of people will try which will help the development by giving several feedbacks.

I am currently on Clean Rom Inheritance (= CROMI) 2.7.2 which is the latest update in the Clean Rom series. Since you are using 2.4, I guess the steps woul be exactly the same as for you. I am however using Clemsyn kernel. Is the stock kernel required to be able to dual boot ?

One the OP, Ubuntu seems tobe pretty stable since a lot of features ar working. Is that really the case ? Is compiz already something I could consider using at this point of the developpment or is it still a little bit early ?

I am really interested in this project and I thank you a million time for starting actively a development allowing us to dualboot Ubuntu. Keep up you awesome work !!! :)

Thanks for your support)) I think, you could use users general thread for test boot steps. The steps are the same, but with the current rootfs (0.5.0) linux in dualboot may not start. Android with CleanRom should work. Soon I will release a rootfs 0.6, which can be used with dualboot section.
 

singoutout

Senior Member
Sep 8, 2011
157
15
Hi :)

How is it going with the developpment? Is the dualboot working nice with Ubuntu now?
Do you think a cube desktop will ever be usable on a dualbooted Ubuntu on our device?

Thanks for the good work :)
 

keeganmccallum

Senior Member
Nov 16, 2011
174
410
Waterloo
Hello, I have managed to get this booting on my tf300t tablet. It is working alright and I would like to learn a bit about this area of development so I can tweak it to get it working as well as contribute to the project as a whole. So far it has bugs with wifi, bluetooth, and sound. Also, when I select shutdown from the ubuntu menu, it corrupts the image and it will boot to lightdm and then freeze. I tried compiling a kernel for it based on a tweaked tf700t 10.4.4.20 kernel that was patched by untermensch to work for the tf300t but it did not solve any issues, it pretty much performed the same. I wanted infrom everyone of the issues on the tf300t as well as ask for some guidance as to documentation for what steps I can take to fix these issues. Thanks.
 

_that

Recognized Developer / Inactive RC
Oct 2, 2012
4,821
4,211

Successfully flashed via fastboot and it booted my Android (still the old CleanROM 2.3) fine. The initrd menu and framebuffer console is awesome. Can't try your rootfs right now because my PC cardreader is making trouble (I hate SD cards and readers, they are unreliable sh**, or they hate me).

Only everything is very tiny (160 dpi instead of 240), and adding ro.sf.lcd_density=240 to /system/build.prop did not help. I'll have to add it to the initrd and see if it helps. Strange, because I thought newer CleanROMs also set the dpi via /system/build.prop, but who knows. Eventually I should install CRI 3.0 anyway.

Hm, while I was writing this, the TF700 spontanously rebooted... looks like problems turning off the screen. /proc/last_kmsg contained two WARNINGs with stack trace, both containing do_blank_screen (drivers/tty/vt/vt.c:3728 and vt.c:650)

I just read that this is Clemsyn's kernel - where did you find the sources for the current version and what did you modify? There are so many different binaries in that thread and so few source drops that I totally lost track.
 
Last edited:
  • Like
Reactions: bmlarson

singoutout

Senior Member
Sep 8, 2011
157
15
Hi:)
I've just seen the cube desktop is know supported on 0.6.2. How is it performing ? Is the latest version smoother than 0.5 ?
Thanks for the great work!!! I hope our tabs will soon have a stable and smooth Ubuntu dualbootable with CROMI;)
 

rabits

Senior Member
Nov 25, 2012
184
430
St.Petersburg
Only everything is very tiny (160 dpi instead of 240), and adding ro.sf.lcd_density=240 to /system/build.prop did not help. I'll have to add it to the initrd and see if it helps. Strange, because I thought newer CleanROMs also set the dpi via /system/build.prop, but who knows. Eventually I should install CRI 3.0 anyway.

Hm, while I was writing this, the TF700 spontanously rebooted... looks like problems turning off the screen. /proc/last_kmsg contained two WARNINGs with stack trace, both containing do_blank_screen (drivers/tty/vt/vt.c:3728 and vt.c:650)

Yeah, seems like too old CR version...

I just read that this is Clemsyn's kernel - where did you find the sources for the current version and what did you modify? There are so many different binaries in that thread and so few source drops that I totally lost track.

You can find info about kernel here and here. I'm used this source from second link to build 0.6.2 kernel.

Hi:)
I've just seen the cube desktop is know supported on 0.6.2. How is it performing ? Is the latest version smoother than 0.5 ?

I just installed extra plugins))) Currently Nexus7 is more smoothed then tf700 with unity... Cube is rotating ok, but with IO lags - sd speed so slow.
Currently I working on more basic things, like install linux in main flash drive. If you have any ideas - please, post it here.
 
  • Like
Reactions: bmlarson

cb22

Senior Member
Dec 4, 2006
74
165
Hi everyone,

I've been working on getting ArchLinuxArm running on the TF300 over at http://xdaforums.com/showthread.php?t=1918849

Just something that might help with your touchscreen - you should be able to get basic functionality if you use the xf86-input-mtev driver (see https://aur.archlinux.org/packages/xf86-input-mtev-meego/ )

While less than ideal, it's better than nothing. We have the same issue with X segfaulting when the evdev driver is used. I actually looked into that, and it has to do with the way events are reported by the kernel driver, if I remember correctly.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 63
    Developers thread for users general.

    I will post here some external links and additional information.

    GitHub tf700 Repository - place for config files and step-by-step manual to create you own kernel and rootfs
    GOO.IM file place
    Tablet PPA for Raring

    Changed packages is placed in /root/deb directory.

    Known problems: (nexus7 wiki, mattfischer blog post, nexus7 bugs)
    • Unity has some problems with performance and ram eating - this is place for optimizations.
    • In-device microSD really bad works.
    • WiFi disabling is fail bcmdhd kernel module.
    • vt1-only, if you try to switch to vt* (`chvt 2`) - your device is freezes and reboot.
    • To use unity you need nux-tools, libnux-3.8-0 and libnux-3.8-common with version 3.8.0-0ubuntu1nexus7.1 (this packages are hold)
    • Sometimes I can see really bad artifacts with fonts and background on the device screen (mostly if using chromium browser). Only reboot fixes it.

    Progress list:
    • Test Linux boot {DONE}
    • SDCard rootfs {DONE}
    • Graphical boot{DONE}
    • Keyboard special keys remapping (Esc, F1-12, Ins, Print, Break, Del, Home->Alt, Search->Meta4) {DONE in 0.8.0}
    • WiFi {DONE}
    • OpenGL ES {DONE}
    • Audio {DONE} In pavucontrol as output device selected Analog Stereo Output, in alsamixer (tegra-codec) unmute IntSpk
    • Video up to 1080p {DONE} (ac100 info) - Soft audio requires gstreamer0.10-plugins-*
      • nvgstplayer --sas="audioconvert ! pulsesink" -i <videofile> - Fullscreen mode
      • nvgstplayer --svs="nvxvimagesink" --sas="audioconvert ! pulsesink" -i <videofile> - Window mode
    • Touchscreen {DONE in 0.7.0} - used mtev one-touch driver 0.1.13 with api and 2button patches - right click by push one finger and click by second finger (thanx, cb22)
    • Touchpad {DONE in 0.6.1}
      • 2 fingers scrolling {DONE}
      • 3rd mouse button by 2 finger tap {DONE 0.6.1} - created new version of package multitouch "-swaptaps"
    • Updated tegra3 drivers and codecs to 16.2 {DONE in 0.6.1}
    • Ubuntu/Android dualboot {DONE in 0.7.0}
      • Initrd bootloader trying to boot sda1(dock sd cardreader or usb device), mmcblk1p1(internal microsd cardreader), sdb1 (dock sd cardreader or usb device), mmcblk0p9(inernal device), /data/media/tf700-rootfs-linux.img(in-device installed virtual disk) (0.7.0)
      • If it can't load linux - fallback to Android (0.7.0)
      • Boot android if voldown (or special, like Up key) key pressed in menu (0.7.0)
      • Fixed nvavp problem in android (0.7.0)
      • Fixed problems with Android sleeping by unbinding vtconsole before Android boot (0.7.0)
    • Initrd installer to mmcblk0p8 user partition and mount as loop with binding mmcblk0p8 {DONE in 0.7.0}
    • Fonts and cursor size {DONE in 0.8.0}
    • ZIP installer by Aroma {partially}
      • Install of boot image {DONE in 0.7.1}
      • Install script for SDcard-way and Virtual Disk-way {DONE in 0.8.0}
      • Possibility of using mmcblk0p8 /data as /home {DONE in 0.8.0}
      • Dynamical making of boot.blob {DONE in 0.8.1}
      • Select rootfs to boot {DONE in 0.8.1}
      • CM10.1 initrd (link) {DONE in 0.8.1}
      • Android boot from sdcard or virtual drive {DONE in 0.8.1}
      • UbuntuTouch initrd {DONE in 0.8.2}
      • Change boot system names {DONE in 0.8.2}
      • Add option to boot android by default {DONE in 0.8.2}
      • Check md5 of rootfs archive
      • Encryption for linux partition
    • FSCK check & fix rootfs before mounting {DONE in 0.8.2}
    • GPIO keys {partially in 0.8.0}
    • Switch rootfs to 13.4 (link) {partially}
    • Bluetooth
      Try this: /system/bin/brcm_patchram_plus --bd_addr `cat /etc/bluetooth/bt_addr` --enable_hci --enable_lpm --no2bytes --tosleep 50000 --baudrate 4000000 --use_baudrate_for_download --patchram /lib/firmware/bcm4334.hcd --i2s=1,0,0,0 /dev/ttySAC0&
    • Totem and nvgst modules
    • Go to Wayland+Weston+libhybris to use egl android drivers
    • Disable speaker if headphones connected

    Additional:

    Need help:
    • Suspend to RAM - Not working with X (trace), without X (stop lightdm) - suspended, but not wake.
      1. Wakelock to emmc
      2. Wake up: echo "on" > /sys/power/state or powerbutton (maybe with kernel patching)
    • Totem - now is not working
      gstreamer-properties and set Audio->Output=Custom, Audio->Output->Pipeline="nv_omx_audiosink" and Video->Output=Custom, Video->Output->Pipeline="nvxvimagesink"
    • HDMI copy of screen (any ideas?)
      • Xorg configuration shows blue lines on HDMI screen
      • Not working properly with 1920x1080: `xrandr --output LVDS-1 --auto --output HDMI-1 --mode 1920x1080` - I get "xrandr: Configure crtc 1 failed"
      • Tested on different display with fullhd support - seems like tegra3 drivers problem
      • Works ok with 1280x800:
        xrandr --newmode `gtf 1280 800 60 | tail -n2 | head -n1 | sed 's/ Modeline //'`
        xrandr --addmode HDMI-1 1280x800_60.00
        xrandr --output LVDS-1 --auto --output HDMI-1 --auto
    • HDMI audio (any ideas?)
    • Adobe Flash player (any ideas?)
    • Skype (any ideas?)

    List of optimizations:
    • ZRam {DONE}
    • UKSM (Ultra Kernel Samepage Merging) {DONE} (info in Russian)
    • CPU optimizations {partially}
      • Clemsyn OC 1.3 - 1.8ghz 650GPU Kernel {DONE in 0.6.2} - seems like not properly working on AndroidRoot hacked bootloader
    • Boot optimizations {partially}
      • Initrd scripts {DONE in 0.6.2}
      • Kernel modules upgrade from initrd {DONE in 0.7.1}
    • IO optimizations {partially}
      • Some optimizations of filesystem mounting {partially in 0.6.2}
      • Install to device main emmc memory {DONE in 0.7.0}
    • Power optimizations:
      • Screen off on lid
      • RAM Sleep
      • Powersave, Auto and Performance modes

    Plans for the future:
    • Prepare common installer for any tegra3 device.

    Test builds:
    • Nope

    If you can help in development - please, write here.
    7
    Hi, Guys! I'm back.
    I'm completely loose my data on my encrypted notebook by replacing luks headers :eek: , but this is not big problem (praise github! :laugh:)

    Current plans till 13 Jan:
    • prepare installer into rootfs
    • switch from img to tar rootfs
    • simplify install process.
    6
    Hey, guys!)) Happy NY!

    I prepare new release with installer to main memory 8-10 Jan.
    Thanks, guys, for your desire to support development - I added the paypal button, but I do not really need the money. I do this porting mostly for myself))

    Once again, Happy New Year and Merry Christmas! I left my computer for a small vacation))
    6
    No rush or disrespect intended... Any progress?

    Hmmm... Some progress:
    - Rollback to previous kernel
    - Directory replace of img files - switched to chroot and blocked by mountall upstart task
    - No progress in 13.04 - blocked by dir replace...

    Earlier this week I finished a vacation that had no access to the north of the development. Also, I started another project in this now tf700 enthusiasm waned a bit.
    But I plan to complete the integration of the 13.04 until the end of July.
    4
    Hi everyone,

    I've been working on getting ArchLinuxArm running on the TF300 over at http://xdaforums.com/showthread.php?t=1918849

    Just something that might help with your touchscreen - you should be able to get basic functionality if you use the xf86-input-mtev driver (see https://aur.archlinux.org/packages/xf86-input-mtev-meego/ )

    While less than ideal, it's better than nothing. We have the same issue with X segfaulting when the evdev driver is used. I actually looked into that, and it has to do with the way events are reported by the kernel driver, if I remember correctly.