Translation(s): none

DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owner would know how get the best out of that hardware.

The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware.

Models covered

ASUS Transformer Book T100TA-DK002DH

T100TAM-BING-DK016B

CPU:

Intel Atom Bay Trail Z3740 (BYT-T)/BGA

Intel Atom Bay Trail Z3775 (BGA)

Video card:

Intel HD Graphics (Atom Processor Z36xxx/Z37xxx Series Graphics & Display)

Screen:

10.1" HD SLIM WV (GL, LED-TP)

Wireless card:

Broadcom 43241b4 SDIO

Disks:

eMMC 32 GB (/dev/mmcblk0)
internal USB Disk 7.5GB (/dev/sda, hidden, Windows recovery)

eMMC 64GB (/dev/mmcblk0)

RAM:

LPDDR3 1067 2GB (on-board)

Bluetooth:

Broadcom (on-board BCM2035 HCI?)

Overall Status in Debian Stretch (testing)

Core Components

[ATTACH]

Boot Standard Kernel:

{OK}

Detect hard drives:

{OK}

CPU:

{i} (Bay Trail C-state issue, workaround available)

Extra Features

Shutdown

{OK}

Reboot

{OK}

Hibernation

/!\

Sleep / Suspend

/!\

Battery monitor

{OK}

Xorg

{OK}

- OpenGL

{OK}

- Resize-and-Rotate(randr)

{i}

Screen backlight

{X} (always at full brightness)

Light sensor

{X}

Switch to External Screen (HDMI)

{OK}

Accelerometers

{OK}

Mouse

- Built-in (Touchpad)

{OK} (but no multitouch)

- Built-in (Touchscreen)

{OK} (but no multitouch)

Bluetooth

{i} /!\

Wireless/Wifi

{i} X-(

Keyboard's Hotkeys

{OK} (only some keys)

Sound

{i} X-(

MicroSD card reader

/!\ since kernel 4.8

Built-in camera

{X}

Legend :
{OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware

Important Notes

The information and procedures contained in this page are mostly for the T100TA model (see hardware specifics above) and therefore it is possible that they are not completely suitable for different T100 models. The T100TA has an hardware similar to that one of the Asus X205TA, informations and procedures regarding these two models can be usefully shared.

/!\ While installing Debian you already need to apply the fix described in the Power Management section to keep the installer from crashing.

/!\ Closing the lid triggers automatic suspend to RAM, which causes a full freeze. To prevent this see the article about Suspend on this wiki. Disabling suspend is not enough, the lid close action needs to be changed too.

{i} Before installing Debian, Secure Boot needs to be disabled. Also, if dual-booting with Windows 8 or greater version, it is recommended to disable the fast boot feature in Windows.

{i} Although the Debian Jessie (stable) installer includes all the needed modules and core changes to install and boot on this machine, it is advisable to install Debian Stretch (testing) and keep it up to date due to a lot of components still unsupported. If you really want to install Debian Jessie (stable) at least you can use the backports repository to install the latest kernels and firmwares when available.

{i} The T100TA is a mixed mode EFI system (i.e. a 64-bit CPU combined with a 32-bit EFI) without any legacy BIOS mode. By default, the Jessie i386 installer images should boot on this machine via UEFI and let you install a complete 32-bit (i386) system. If you use the multi-arch amd64/i386 netinst or DVD image, you will also be able to install in 64-bit mode. You might expect slightly better performance that way, but the limited memory on the machine (2 GiB) will become more of an issue.

{i} WiFi is difficult to configure inside the Debian Installer environment (as explained in the WiFi section). Thus it is recommended to use a standard CD/DVD Debian Installer image and not a small netinst image. Alternatively you can use USB network to get internet or use debootstrap from a live debian based system on a usb stick (preferably pre configured to work on a T100).

If you want to install Debian 64-bit without the debian installer, e.g. with debootstrap, remember to install GRUB for the 32-bit EFI: chroot to the newly installed Debian partition and install GRUB in this way:

# apt install grub-efi-ia32-bin
# grub-install --target i386-efi

Configuration

Power Management

Intel Bay Trail CPU C-states issue

Devices with Intel Bay Trail CPUs are affected by this bug which causes seemingly random crashes and has not been resolved so far. The only work around which has been reported to work consistently is setting the intel_idle.max_cstate=1 kernel parameter which has the drawback of increasing power consumption considerably.

/!\ During installation and until you have configured Grub as described below, you need to manually apply this parameter at each boot! Both in Grub and before launching the Debian installer, you can do this by pressing e after selecting the entry you want to boot and then adding the parameter at the end of the "linux..." line.

To set this parameter, edit the file /etc/default/grub and add the parameter at the GRUB_CMDLINE_LINUX line like this (if there already are other parameters there, leave them and just add yours at the end separated by a space):

GRUB_CMDLINE_LINUX="intel_idle.max_cstate=1"

then update grub with:

# update-grub

Status of the Intel Crystal Cove PMIC

The power management integrated circuit (PMIC) of the Intel Baytrail is called Crystal Cove. Full support for this PMIC is not yet available with kernel linux 4.8, so suspend to RAM, hibernation and the screen power management do not work.

With Linux kernel 4.8:

Suspend to RAM does not work and it sends the machine into a state from which one can only recover by forcing the shutdown. Hibernation partially works because, like the suspend, it requires to force the shutdown and at the next boot the system recovers but with some glitches. Some suggestions are discussed in this thread.

Screen power management

Because the Crystal Cove PMIC is not yet fully supported the brightness level of the screen cannot be adjusted and it is locked at the maximum value. Some patches for this issue are discussed in this discussion. Also, the system tends to freeze if the screen goes in sleep/suspend mode, so it is better to disable this feature in the power management of the system.

As a partial workaround for the brightness control issue, xrandr allows to change the brightness of the screen with a software only modification:

$ man xrandr
[...]
--brightness brightness
    Multiply the gamma values on the crtc currently attached to the output to specified floating value.
    Useful for overly bright or overly dim outputs. However, this is a software only modification, if 
    your hardware has support to actually change the brightness, you will probably prefer to use xbacklight.

meaning that it does not dim the backlight and therefore it does not reduce power consumption. The syntax is:

$ xrandr --output <OUTPUT> --brightness <VALUE>

where the <OUTPUT> can be found with:

$ xrandr | grep -w connected | cut -d" " -f1

and the <VALUE> should be something between 0 and 1. For example:

$  xrandr --output DSI-1 --brightness 0.8

The script t100ta_touchscreen_brightness_ctl-debian-stretch.sh makes use of the command above to progressively reduce the screen brightness.

Touchscreen

Intel HD Graphics (Atom Processor Z36xxx/Z37xxx Series Graphics & Display), it does not require the i915 driver (xserver-xorg-video-intel can be uninstalled).

The touchscreen is identified as ATML1000:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ASUSTek COMPUTER INC. ASUS Base Station(T100)     id=9    [slave  pointer  (2)]
⎜   ↳ ASUSTek COMPUTER INC. ASUS Base Station(T100)     id=10   [slave  pointer  (2)]
⎜   ↳ ATML1000:00 03EB:8C0E                     id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sleep Button                              id=7    [slave  keyboard (3)]
    ↳ ASUSTek COMPUTER INC. ASUS Base Station(T100)     id=8    [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                          id=12   [slave  keyboard (3)]

Screen rotation

On-board accelerometers are supported and the screen can be automatically rotated by adding the script t100ta_touchscreen_rotation_auto-debian-stretch.sh to the startup applications (use your DE system settings). For a manual rotation of the screen, without using the accelerometers and only when requested by the user, the script t100ta_touchscreen_rotation_manual-debian-stretch.sh can be used instead.

Right mouse button emulation

The touchscreen does not emulate a right mouse button out of the box. One way to do that is by using an accessibility tool for mouse that, for example, can emulate a right click when there is a prolonged touch. Otherwise, it is possible to use one of the unused hardware buttons of the tablet.

On the left side of the tablet there are two buttons: the volume button, the bigger one, that is not recognized yet by the kernel and cannot be used, and the other one, the Windows button, that is recognized by the kernel and can be used as a right mouse button.

It is possible to do that by linking a command, in this case xdotool click 3, to the Windows button by using xbindkeys. These two packages have to be installed, then an initial configuration file for xbindkeys has to be created:

# apt install xbindkeys xdotool
$ xbindkeys --defaults > ~/.xbindkeysrc

After that, the command that perform the right mouse button click have to be associated to the Windows button by inserting a proper entry in the xbindkeys configuration file. Read the manual for instruction but, in brief, the following command should be good:

$ cat << EOF >> ~/.xbindkeysrc
# emulate right mouse button with the Windows button
"xdotool click 3"
  m:0x0 + c:248
EOF

The associated key is represented by the code m:0x0 + c:248, check that it is correct by issuing xbindkeys -k and then pressing the Windows button. If everything is ok then make xbindkeys reload its configuration file or restart your session.

Audio

The audio device is an Intel SST Audio / Realtek RT5640, it requires its proprietary firmware and a proper ALSA configuration file.

/!\ It's possible to destroy the speakers when setting the volume too high, be careful when experimenting with ALSA configuration files.

{i} Due to a regression in the Linux kernel 4.9 (see this patch) the audio device doesn't work. The issue is solved in the Linux kernel 4.10.

The firmware can be installed with:

# apt install firmware-intel-sound

To create the ALSA configuration file, first enable the UCM for the RT5640 audio device by downloading this directory and copying it to /usr/share/alsa/ucm/ (read the README file contained inside and set the proper permissions if needed, hint: chmod 755). Then create the ALSA configuration file with alsactl (available in the package alsa-utils):

# alsactl store

this will create the configuration file /var/lib/alsa/asound.state. If you use pulseaudio restart it with:

$ pulseaudio -k

After that the audio device should work.

Switching from speakers to headphones and vice versa seems to not be automatic, it can be done using the audio manager of the DE or a dedicated application like pavucontrol.

WiFi

The wifi device is an on-board SDIO device Broadcom 43241b1, firmware and nvram file need to be installed.

The firmware can be installed with the package firmware-brcm80211 from the debian repository, download it and install it. If you have a way to access to the internet, like a wifi dongle, simply use the package manager to install it.

The nvram file can be found under /sys/firmware/efi/efivars/. If the directory is empty it may need to be (temporarily) mounted first by:

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Then the nvram-file needs to be copied and renamed:

# cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcmfmac43241b4-sdio.txt

If this does not work on T100TAL, try:

# cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcm/brcmfmac43340-sdio.txt

In general, you can determine the name of the target file looking at the output in the /tmp/var/syslog after you restart the brcmfmac module:

brcmfmac_sdio mmc1:0001:1: firmware: failed to load brcm/brcmfmac43340-sdio.bin (-2) 

Note that brcmfmac43241b4-sdio.txt (and other) contains a wrong MAC address. However this is not a problem and does not need to be changed as the file is only a template.

After that reboot the system or reload the brcmfmac module:

# modprobe -r brcmfmac && modprobe brcmfmac

WiFi instabilities

The wifi device frequently disconnects and when it happens it is not able to reconnect. The only workaround is to reload its kernel module:

# modprobe -r brcmfmac && modprobe brcmfmac

For some hints check this discussion

Built-in camera

The model should be "mt9m114". Further information has to be retrieved.


System Summary

lspci

00:00.0 Host bridge [0600]: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register [8086:0f00] (rev 09)
00:02.0 VGA compatible controller [0300]: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Graphics & Display [8086:0f31] (rev 09)
00:14.0 USB controller [0c03]: Intel Corporation Atom Processor Z36xxx/Z37xxx Series USB xHCI [8086:0f35] (rev 09)
00:1a.0 Encryption controller [1080]: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine [8086:0f18] (rev 09)
00:1f.0 ISA bridge [0601]: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Power Control Unit [8086:0f1c] (rev 09)

lsusb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0b05:17e0 ASUSTek Computer, Inc. 
Bus 001 Device 002: ID 0b05:17e4 ASUSTek Computer, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Resources

Attachments

Some configuration files and sample outputs.

  • [get | view] (2016-05-21 18:26:08, 65.4 KB) [[attachment:kernel4.5.xand4.4.x.asound.state]]
  • [get | view] (2016-01-24 14:38:08, 19.4 KB) [[attachment:t100_B.state]]
  • [get | view] (2016-01-30 11:50:25, 19.3 KB) [[attachment:t100_g.state]]
  • [get | view] (2016-07-26 12:52:33, 1.4 KB) [[attachment:t100ta_touchscreen_brightness_ctl-debian-stretch.sh]]
  • [get | view] (2016-08-19 19:15:26, 2.9 KB) [[attachment:t100ta_touchscreen_rotation_auto-debian-stretch.sh]]
  • [get | view] (2016-08-19 19:15:36, 2.3 KB) [[attachment:t100ta_touchscreen_rotation_manual-debian-stretch.sh]]
 All files | Selected Files: delete move to page

The following links are specific to Ubuntu (meaning that everything found there doesn't strictly apply to Debian), use them only to retrieve more information and news and/or test new features.
G+ group ASUS T100 Ubuntu
John Wells - Latest steps to install Ubuntu on the Asus T100TA
John Wells - T100TA drivers and scripts

Credits

Much of the information reported in this page were retrieved from the G+ group ASUS T100 Ubuntu and tested and adapted in order to work on Debian Stretch. Credits go to the developers that reported and solved the different issues.