[DEV] ubuntu on the transformer

Search This thread

lilstevie

Senior Recognized Developer
Apr 17, 2009
1,339
1,040
This is my kit for running ubuntu 11.04 on the ASUS Transformer.

THIS IS NOT A NEWBIE SUPPORT THREAD, NON DEV QUESTIONS AND HELP ME HELP ME KIND OF POSTS ARE NOT WELCOME IN THIS THREAD, THIS THREAD IS FOR DEVELOPMENT RELATED POSTS ONLY

This thread is to replace old thread for dev information here. Use that thread for newbie support and non development related discussion in relation to ubuntu on the transformer.

This is running natively and from the eMMC so no µSD card required, at the moment only linux is supported, but a windows of the kit is coming soon.

This video shows ubuntu running on the transformer, it is slower than what is installed with this flash pack. The video is a class2 µSD card and speeds are not an example of speeds from this kit.

Updates will be available in .deb form at some point.

you will need to download an nvflashable rom, like prime.



Please read the README before attempting this. The readme is below as well as in the kit, YOU WILL LOSE DATA.

Download links are in the second post.


Ubuntu flash pack for the ASUS transformer
------------------------------------------------------------------

(c) 2011 Steven Barker <lilstevie@lilstevie.geek.nz>

This package should have only been linked to from
http://rootzwiki.com/showthread.php?1072-ubuntu-on-the-transformer
or http://xdaforums.com/showthread.php?p=16097869if you
got the links to this package from anywhere but that forumpost
please send an email to the above email address with the subject:
"unauthorised posts"

DISCLAIMER
------------------------------------------------------------------

Steven Barker (lilstevie) nor anybody will take any responsibility
for any damage, data loss, fire, death of a loved one, or loss of
data resulting from using this mod for your device. Using this mod
may void your warranty.

NVFLASH
------------------------------------------------------------------

nvflash is the intellectual property of nvidia, and remains the
property of nvidia. Any questions or queries regarding the usage
and licence of nvflash should be directed to nvidia.

abootimg
------------------------------------------------------------------

abootimg is by Gilles Grandou <gilles@grandou.net> and is
unmodified. The source is available from online at
http://gitorious.org/ac100/abootimg

usage
------------------------------------------------------------------

Before using this pack back up any data that you may have on your
device, this method is destructive to data, and will wipe
everything. If you plan on dual-booting with android you will need
to download a full system like prime and put the images (system.img
boot.img recovery.img) in images/

This package does not include the ubuntu rootfs. You should have
already downloaded this from the link located on this forum post
located http://rootzwiki.com/showthread.php?1072-ubuntu-on-the-transformer
or http://xdaforums.com/showthread.php?p=16097869if you
haven't downloaded it yet it is 950MB so start it downloading
and grab a coffee. Decompress the gzipped tar to images/

With that taken care of, here are the instructions for use:

1) select whether you want to dual boot, and which OS you want as
your default.

2) make absolutely sure that you have backed up your data, everything
past this point is going to destroy your data.

3) run the appropriate sh for the choice you have made in step 1

flash-purelinux.sh for a pure ubuntu setup, this is no android
recovery is ubuntu single user mode.

flash-linux-android.sh for installing android and linux dual boot
with android as the default OS. To boot into linux hold power+vol-down
until prompted on screen to press vol-up.

flash-linux.sh for installing android and linux in dual boot with
android and linux, linux is the default OS, to boot into android
hold power+vol-down until prompted on screen to press vol-up.

flash-android.sh for installing android only, no linux, use this to restore
back to a android only state, this will retain the blobs-be-gone enhancement.

restore-default.sh for reverting to a factory state, this restores the emmc
layout back to how it was before running any of the scripts in this pack.

4) Boot into linux, oem-config will run giving you initial setup. For this
you will need either the keyoard dock, or to use adb.

5) To use the onscreen keyboard you need to attach the usb cable to your
computer and wait for it to boot to the language selection screen.
Make sure not to disconnect the cable from your transformer while you are
using the keyboard during initial setup.

Connect to the device with adb shell. once connected execute "DISPLAY=:0 onboard"

The onscreen keyboard will appear.

6) Enjoy the new life you have with ubuntu on your transformer.

7) Once on the internet you may like to add the tegra ppa
 
Last edited by a moderator:

jerdog

Admin Emeritus - Purveyor of word nuggets
Why can't we look to other tablets to get the wifi and hardware execl

Sent from my SGH-T959 using XDA App

This is a development thread - and the OP has requested that development happen in it - not Mobile Phone User Support Services For Ungrateful Nerds.

Anything not development, or useful to development, will be removed.
 

vhda

Senior Member
Jul 22, 2011
84
16
There is some rather good information about wireless and bluetooth in bcm4329 using the original kernel on the following two pages:

http://htc-linux.org/wiki/index.php?title=LeoWifi
http://htc-linux.org/wiki/index.php?title=Ubuntu/Leo/Bluetooth

With this information I was able to connect to wireless networks through Network Manager and I was also able to use BT. Still did not test Dial Up Network through Bluetooth in Network Manager.

I've forked lilstevie's github kernel and applied the patch to make Network Manager work. You can find it in branch wireless/bcm4329 of the following repository:

git://github.com/vhda/linux_kernel_TF101.git

I understand that you are working in a 2.6.38 kernel where this no longer applies. Could someone share the repository link?
 
  • Like
Reactions: ppirate

lilstevie

Senior Recognized Developer
Apr 17, 2009
1,339
1,040
There is some rather good information about wireless and bluetooth in bcm4329 using the original kernel on the following two pages:

http://htc-linux.org/wiki/index.php?title=LeoWifi
http://htc-linux.org/wiki/index.php?title=Ubuntu/Leo/Bluetooth

With this information I was able to connect to wireless networks through Network Manager and I was also able to use BT. Still did not test Dial Up Network through Bluetooth in Network Manager.

The bluetooth stuff is what I have been testing out, and is included as part of the BSP for the next revision of the rootfs.

As for the NM patch, did wifi work through the network manager, because AFAIK if WICD does not work, NM won't.

I've forked lilstevie's github kernel and applied the patch to make Network Manager work. You can find it in branch wireless/bcm4329 of the following repository:

git://github.com/vhda/linux_kernel_TF101.git

I understand that you are working in a 2.6.38 kernel where this no longer applies. Could someone share the repository link?

sure https://github.com/lilstevie/uboot-tegra and https://github.com/lilstevie/CrOS-Hybrid-Kernel

I am not going to post any further instructions other than
Code:
 [device]
type=hsmmc
instance=3

[partition]
name=BCT
id=2
type=boot_config_table
allocation_policy=sequential
filesystem_type=basic
size=3145728
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0

[partition]
name=PT
id=3
type=partition_table
allocation_policy=sequential
filesystem_type=basic
size=4096
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0

[partition]
name=EBT
id=4
type=bootloader
allocation_policy=sequential
filesystem_type=basic
size=524288
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0
filename=./images/u-boot.bin

[partition]
name=MBR
id=5
type=data
allocation_policy=sequential
filesystem_type=basic
size=1048576
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0

[partition]
name=ENV
id=6
type=data
allocation_policy=sequential
filesystem_type=basic
size=4096
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0

[partition]
name=uim
id=7
type=data
allocation_policy=sequential
filesystem_type=ext2
size=41943040
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0
filename=./images/u-boot.img

[partition]
name=UBT
id=8
type=data
allocation_policy=sequential
filesystem_type=basic
size=-1
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0

[partition]
name=MPT
id=9
type=data
allocation_policy=sequential
filesystem_type=basic
size=0xFFFFFFFFFFFFFFFF
partition_attribute=0
allocation_attribute=8
percent_reserved=0

being the required flash config, I am specifically being vague because as stated in the other thread, I WILL NOT SUPPORT THIS CONFIGURATION at this point in time
 

vhda

Senior Member
Jul 22, 2011
84
16
The bluetooth stuff is what I have been testing out, and is included as part of the BSP for the next revision of the rootfs.

Following the steps in the page I copied above I was able to make BT connections. NM is not able to automatically detect the DUN configuration of my mobile phone, but I don't think that is related with the driver.
Don't know if this still applies in 2.6.38.

As for the NM patch, did wifi work through the network manager, because AFAIK if WICD does not work, NM won't.

Yep. I'm answering from Linux in TF connected through NM. I can see other networks and my personal is hidden and it still connects automatically.
But I do have to run everything as root. If I don't, this happens:

Code:
$ host www.google
net.c:142: socket() failed: Permission denied
net.c:142: socket() failed: Permission denied
host: can't find either v4 or v6 networking

Tried the obvious solution and added myself to netdev group, but doesn't seem to work. Still did no analysed this part too much. It can also be related with selinux, apparmor or anything else...

sure https://github.com/lilstevie/uboot-tegra and https://github.com/lilstevie/CrOS-Hybrid-Kernel

I am not going to post any further instructions other than
[...]
being the required flash config, I am specifically being vague because as stated in the other thread, I WILL NOT SUPPORT THIS CONFIGURATION at this point in time

Don't worry. I'm already seeing that this is probably too much sand for my truck (is this expression valid in english?). I do not intend to use uboot at this time and will wait for you guys to finish that development to learn from the end result. I'm hoping there is not special patch applied to the kernel for uboot support so that I can use it as I am using the current one.
Thanks for the clues anyway. I may try to play around with uboot if I give up on the kernel stuff ;)
 

lilstevie

Senior Recognized Developer
Apr 17, 2009
1,339
1,040
Following the steps in the page I copied above I was able to make BT connections. NM is not able to automatically detect the DUN configuration of my mobile phone, but I don't think that is related with the driver.
Don't know if this still applies in 2.6.38.

Ah, I think this is related to which firmware you use, some are worse than others. On both 2.6.38 and 2.6.36 I can get bluetooth PAN working (that is how my BT devices share their networking) AFAIK PAN and DUN share the same general idea


Yep. I'm answering from Linux in TF connected through NM. I can see other networks and my personal is hidden and it still connects automatically.
But I do have to run everything as root. If I don't, this happens:

Code:
$ host www.google
net.c:142: socket() failed: Permission denied
net.c:142: socket() failed: Permission denied
host: can't find either v4 or v6 networking

Tried the obvious solution and added myself to netdev group, but doesn't seem to work. Still did no analysed this part too much. It can also be related with selinux, apparmor or anything else...

ok, if the patch is actually working this time, do a pull request and I will merge it, I believe we talked about this in the past but you weren't sure about it working. As for needing to run everything as root, check your kernel config for android paranoid networking, you will probably find that it is set.

Don't worry. I'm already seeing that this is probably too much sand for my truck (is this expression valid in english?). I do not intend to use uboot at this time and will wait for you guys to finish that development to learn from the end result. I'm hoping there is not special patch applied to the kernel for uboot support so that I can use it as I am using the current one.
Thanks for the clues anyway. I may try to play around with uboot if I give up on the kernel stuff ;)

At present the 2 kernels are not compatible with each others bootloader, I am working on trying to figure this problem out, and hopefully when it is they will both work on u-boot and vice versa
 
  • Like
Reactions: Lunchbox115

bergfex

Senior Member
Sep 16, 2010
206
105
Hagenberg
Originally Posted by vhda View Post

Yep. I'm answering from Linux in TF connected through NM. I can see other networks and my personal is hidden and it still connects automatically.
But I do have to run everything as root. If I don't, this happens:

Code:

$ host www.google
net.c:142: socket() failed: Permission denied
net.c:142: socket() failed: Permission denied
host: can't find either v4 or v6 networking

Tried the obvious solution and added myself to netdev group, but doesn't seem to work. Still did no analysed this part too much. It can also be related with selinux, apparmor or anything else...

ok, if the patch is actually working this time, do a pull request and I will merge it, I believe we talked about this in the past but you weren't sure about it working. As for needing to run everything as root, check your kernel config for android paranoid networking, you will probably find that it is set.

Maybe this solves the problem also on Jhinta's and my ubuntu version for HTC Desire HD. Thanks for the hint.
 

vhda

Senior Member
Jul 22, 2011
84
16
Ah, I think this is related to which firmware you use, some are worse than others. On both 2.6.38 and 2.6.36 I can get bluetooth PAN working (that is how my BT devices share their networking) AFAIK PAN and DUN share the same general idea

Talking about firmware, have you ever tried to use the firmware from the brcmfmac driver in bcm4329? Up to now I've been assuming that they were incompatible, but now that you say that it would make sense for them to be, at least to some degree, backward compatible.

ok, if the patch is actually working this time, do a pull request and I will merge it, I believe we talked about this in the past but you weren't sure about it working. As for needing to run everything as root, check your kernel config for android paranoid networking, you will probably find that it is set.

I still feel that the kernel is a bit unstable. I've had a few kernel crash dumps and always when I am using the network. Obviously, when I'm not using it I'm also not using that many resources so it is hard to be sure the stability problem comes from the wireless driver.
And I still have this message showing up in the system log quite frequently:

Code:
[  606.635715] INFO: task kinteractiveup:61 blocked for more than 120 seconds.
[  606.635769] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  606.635816] kinteractiveup  D c0466930     0    61      2 0x00000000
[  606.635961] [<c0466930>] (schedule+0x884/0x974) from [<c008875c>] (kthread+0x68/0x88)
[  606.636044] [<c008875c>] (kthread+0x68/0x88) from [<c003ac10>] (kernel_thread_exit+0x0/0x8)

At present the 2 kernels are not compatible with each others bootloader, I am working on trying to figure this problem out, and hopefully when it is they will both work on u-boot and vice versa

Damn you! Now I'll have to learn how uboot works! And from I saw in the brief look I gave to its documentation it is not that easy! :p
 

lilstevie

Senior Recognized Developer
Apr 17, 2009
1,339
1,040
Talking about firmware, have you ever tried to use the firmware from the brcmfmac driver in bcm4329? Up to now I've been assuming that they were incompatible, but now that you say that it would make sense for them to be, at least to some degree, backward compatible.



I still feel that the kernel is a bit unstable. I've had a few kernel crash dumps and always when I am using the network. Obviously, when I'm not using it I'm also not using that many resources so it is hard to be sure the stability problem comes from the wireless driver.
And I still have this message showing up in the system log quite frequently:

Code:
[  606.635715] INFO: task kinteractiveup:61 blocked for more than 120 seconds.
[  606.635769] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  606.635816] kinteractiveup  D c0466930     0    61      2 0x00000000
[  606.635961] [<c0466930>] (schedule+0x884/0x974) from [<c008875c>] (kthread+0x68/0x88)
[  606.636044] [<c008875c>] (kthread+0x68/0x88) from [<c003ac10>] (kernel_thread_exit+0x0/0x8)



Damn you! Now I'll have to learn how uboot works! And from I saw in the brief look I gave to its documentation it is not that easy! :p

not my fault, I am trying to figure out what it is that is causing problems
 

vhda

Senior Member
Jul 22, 2011
84
16
ok, if the patch is actually working this time, do a pull request and I will merge it, I believe we talked about this in the past but you weren't sure about it working. As for needing to run everything as root, check your kernel config for android paranoid networking, you will probably find that it is set.

Pull request is done. Don't forget that you may need to download the firmware from the link I posted before.

Also found CONfIG_ANDROID_PARANOID_NETWORK option. Re-compiling the kernel as we speak.
 

vhda

Senior Member
Jul 22, 2011
84
16
You're not going to believe this, but with the patched bcm4329 we just need the nvram.txt from the Android partition and everything works fine:

Code:
options bcm4329 iface_name=wlan0 firmware_path=/lib/firmware/brcm/bcm4329-fullmac-4.bin nvram_path=/lib/firmware/nvram.txt

Don't know if this also applies to the original version of the module.

BTW, I think I didn't mention this in the past: I removed _all_ modules from the initrd image and only load them during system boot. That is, I've added "bcm4329" to /etc/modules and created an options file under /etc/modprobe.d with the code above.

One question, anyone knows how to make the touchscreen understand finger movement and scroll up and down accordingly?
 
  • Like
Reactions: ppirate

rickatnight11

Senior Member
Dec 31, 2010
210
61
Ubuntu already has a multitouch framework, uTouch. Theoretically all you'd need to do is implement a mapping from the driver output (assuming there's already a driver that exposes raw multi-touch values) to the uTouch framework, which will take care of guesture recognition, etc.
 

lilstevie

Senior Recognized Developer
Apr 17, 2009
1,339
1,040
You're not going to believe this, but with the patched bcm4329 we just need the nvram.txt from the Android partition and everything works fine:

Code:
options bcm4329 iface_name=wlan0 firmware_path=/lib/firmware/brcm/bcm4329-fullmac-4.bin nvram_path=/lib/firmware/nvram.txt

Don't know if this also applies to the original version of the module.

BTW, I think I didn't mention this in the past: I removed _all_ modules from the initrd image and only load them during system boot. That is, I've added "bcm4329" to /etc/modules and created an options file under /etc/modprobe.d with the code above.

One question, anyone knows how to make the touchscreen understand finger movement and scroll up and down accordingly?

Pull request has been merged in, I will get it moving a bit later on, the module should really be loaded with a udev rule and will be done on the next rootfs update,

I am putting together a new rootfs now, that is smaller than the last one and resizes itself on firstboot.

With the brcmfmac firmware, While I was aware that it worked, I was having stability issues with it (note: that it has been a while since I have been using 2.6.36 and bcm4329 module)
 

vhda

Senior Member
Jul 22, 2011
84
16
Pull request has been merged in, I will get it moving a bit later on, the module should really be loaded with a udev rule and will be done on the next rootfs update,

I am putting together a new rootfs now, that is smaller than the last one and resizes itself on firstboot.

With the brcmfmac firmware, While I was aware that it worked, I was having stability issues with it (note: that it has been a while since I have been using 2.6.36 and bcm4329 module)

I've never worked with udev scripts before, but I can try to create one if you haven't done that already.

Isn't there anyway of bootstraping the eMMC "directly"? It would be great if we could do something like the following in the flash script:
1. Generate an empty ext3 filesystem with the size just above the required for bootstraping.
2. Flash the empty filesystem.
3. Bootstrap Ubuntu/Debian directly to the empty ext3 filesystem eMMC.
4. Install our own .deb package with tf101 specific configurations (including that script of yours that resizes the root FS).
 
Last edited:

lilstevie

Senior Recognized Developer
Apr 17, 2009
1,339
1,040
I've never worked with udev scripts before, but I can try to create one if you haven't done that already.

Isn't there anyway of bootstraping the eMMC "directly"? It would be great if we could do something like the following in the flash script:
1. Generate an empty ext3 filesystem with the size just above the required for bootstraping.
2. Flash the empty filesystem.
3. Bootstrap Ubuntu/Debian directly to the empty ext3 filesystem eMMC.
4. Install our own .deb package with tf101 specific configurations (including that script of yours that resizes the root FS).

you could, but then there is the problem of requiring to download the whole thing live, which would mean needing to make sure wifi was up early etc.
 

vhda

Senior Member
Jul 22, 2011
84
16
you could, but then there is the problem of requiring to download the whole thing live, which would mean needing to make sure wifi was up early etc.

I was considering that there was an Android running in the tablet and we could send the bootstrap output through adb or something similar.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 14
    This is my kit for running ubuntu 11.04 on the ASUS Transformer.

    THIS IS NOT A NEWBIE SUPPORT THREAD, NON DEV QUESTIONS AND HELP ME HELP ME KIND OF POSTS ARE NOT WELCOME IN THIS THREAD, THIS THREAD IS FOR DEVELOPMENT RELATED POSTS ONLY

    This thread is to replace old thread for dev information here. Use that thread for newbie support and non development related discussion in relation to ubuntu on the transformer.

    This is running natively and from the eMMC so no µSD card required, at the moment only linux is supported, but a windows of the kit is coming soon.

    This video shows ubuntu running on the transformer, it is slower than what is installed with this flash pack. The video is a class2 µSD card and speeds are not an example of speeds from this kit.

    Updates will be available in .deb form at some point.

    you will need to download an nvflashable rom, like prime.



    Please read the README before attempting this. The readme is below as well as in the kit, YOU WILL LOSE DATA.

    Download links are in the second post.


    Ubuntu flash pack for the ASUS transformer
    ------------------------------------------------------------------

    (c) 2011 Steven Barker <lilstevie@lilstevie.geek.nz>

    This package should have only been linked to from
    http://rootzwiki.com/showthread.php?1072-ubuntu-on-the-transformer
    or http://xdaforums.com/showthread.php?p=16097869if you
    got the links to this package from anywhere but that forumpost
    please send an email to the above email address with the subject:
    "unauthorised posts"

    DISCLAIMER
    ------------------------------------------------------------------

    Steven Barker (lilstevie) nor anybody will take any responsibility
    for any damage, data loss, fire, death of a loved one, or loss of
    data resulting from using this mod for your device. Using this mod
    may void your warranty.

    NVFLASH
    ------------------------------------------------------------------

    nvflash is the intellectual property of nvidia, and remains the
    property of nvidia. Any questions or queries regarding the usage
    and licence of nvflash should be directed to nvidia.

    abootimg
    ------------------------------------------------------------------

    abootimg is by Gilles Grandou <gilles@grandou.net> and is
    unmodified. The source is available from online at
    http://gitorious.org/ac100/abootimg

    usage
    ------------------------------------------------------------------

    Before using this pack back up any data that you may have on your
    device, this method is destructive to data, and will wipe
    everything. If you plan on dual-booting with android you will need
    to download a full system like prime and put the images (system.img
    boot.img recovery.img) in images/

    This package does not include the ubuntu rootfs. You should have
    already downloaded this from the link located on this forum post
    located http://rootzwiki.com/showthread.php?1072-ubuntu-on-the-transformer
    or http://xdaforums.com/showthread.php?p=16097869if you
    haven't downloaded it yet it is 950MB so start it downloading
    and grab a coffee. Decompress the gzipped tar to images/

    With that taken care of, here are the instructions for use:

    1) select whether you want to dual boot, and which OS you want as
    your default.

    2) make absolutely sure that you have backed up your data, everything
    past this point is going to destroy your data.

    3) run the appropriate sh for the choice you have made in step 1

    flash-purelinux.sh for a pure ubuntu setup, this is no android
    recovery is ubuntu single user mode.

    flash-linux-android.sh for installing android and linux dual boot
    with android as the default OS. To boot into linux hold power+vol-down
    until prompted on screen to press vol-up.

    flash-linux.sh for installing android and linux in dual boot with
    android and linux, linux is the default OS, to boot into android
    hold power+vol-down until prompted on screen to press vol-up.

    flash-android.sh for installing android only, no linux, use this to restore
    back to a android only state, this will retain the blobs-be-gone enhancement.

    restore-default.sh for reverting to a factory state, this restores the emmc
    layout back to how it was before running any of the scripts in this pack.

    4) Boot into linux, oem-config will run giving you initial setup. For this
    you will need either the keyoard dock, or to use adb.

    5) To use the onscreen keyboard you need to attach the usb cable to your
    computer and wait for it to boot to the language selection screen.
    Make sure not to disconnect the cable from your transformer while you are
    using the keyboard during initial setup.

    Connect to the device with adb shell. once connected execute "DISPLAY=:0 onboard"

    The onscreen keyboard will appear.

    6) Enjoy the new life you have with ubuntu on your transformer.

    7) Once on the internet you may like to add the tegra ppa
    5
    Why can't we look to other tablets to get the wifi and hardware execl

    Sent from my SGH-T959 using XDA App

    This is a development thread - and the OP has requested that development happen in it - not Mobile Phone User Support Services For Ungrateful Nerds.

    Anything not development, or useful to development, will be removed.
    3
    I've written a simple program that will let us perform calls to audio_codec_ioctl() from the terminal. It should be useful for testing. Arguments can be either the names of constants or decimal values.

    **NOTE: Sound is not "fixed" for the TF101 yet. This is for debug purposes only. **

    We have success on speaker output with register 76h toggled by use of your program. I eliminated all references to "need_spk" from kernel sources some time ago, so as shown below, the commands executed successfully.
    Code:
    root@braer-tf101:/home/braer/ioctl# ./ioctl /dev/WM8903 OUTPUT_POWER_CONTROL 1
    ioctl(/dev/WM8903, 1074067203 (0x4004F703), 1 (0x1));
    ERROR: 0 Success
    root@braer-tf101:/home/braer/ioctl# dmesg
    ---
    [12331.109976] DEBUG: audio_codec_ioctl
    [12331.110013] AUDIO_CODEC: Power On
    ---
    [12818.500534] DEBUG: audio_codec_ioctl
    [12818.500570] AUDIO_CODEC: AUDIO_DUMP
    [12818.501523] Read 0X10 = 0X0003
    [12818.501545] Read 0X11 = 0X0003
    [12818.504029] Read 0X76 = 0X0033

    In addition to setting the registers, we must also use command "alsamixer" and unmute (by pressing "m"):
    -Left Speaker Mixer DACL
    -Right Speaker Mixer DACR

    Then "aplay -D hw:0,0 <file.wav>" makes the silent speakers sing.
    3
    OK, I've gotten sound working. Just apply the patch with 'patch -p1 -i sound.patch' to a clean copy of the kernel and compile.
    @lilstevie, if you could update the repo with this I'd appreciate it.

    KNOWN BUGS:
    -a 'click' sound may be heard when the codec turns on/off
    -any mic plugged into the jack will probably be ignored (I didn't have the hardware to test this)
    3
    both questions can be answered with a simple yes, APX is in bootrom, not bootloader
    For more information about the Transformer's boot process, check out my thread here.