Ubuntu/Debian on a Lenovo Ideapad 100s -- Linux has issues with this laptop

I picked up an Ideapad 100s and have been trying to install Ubuntu on it. So far I have been unsuccessful to boot the Ubuntu installer. That machine comes with windows 10, uses UEFI and its setup only allows to disable Secure Boot (does not have BIOS compatibility mode). I was able to create a windows restore USB flash drive and used it to verify that the system has capability to boot from EFI USB drives (Fn+F12 for boot options).

I used ubuntu-15.04-desktop-amd64.iso and tried two ways to write to USB media:

  1. I used dd if=ubuntu-15.04-desktop-amd64.iso of=/mnt/sdb then rebooted the ideapad onto boot options, but the EFI boot menu shows Windows Boot Manager as the only choice.

  2. I mounted the iso onto /mnt/iso and created /dev/sdb1 (via fdisk) with type vfat and made it bootable. Created fs onto /dev/sdb1 via mkfs.vfat and mounted it onto /mnt/sdb1. Then used cp -a /mnt/iso/* /mnt/sdb1 to copy all the content. Booted the ideapad yet the boot menu only showed Windows Boot Manager as a option.

Was looking at related posts (e. g. Problem Installing Ubuntu on Lenovo Ideapad U330p) and seems that other machines easily recognize the Ubuntu loaded USB flash drive. This is a nice lightweight laptop I would like to keep, but only if I can install Linux on it. This first hurdle of actually booting Ubuntu installer seems already large (probably would see lots of device issues under Linux–but I'd be glad to get that far).

If anyone has any ideas for me to try, I would be grateful.

Edit #1: I tried booting with http://cdimage.debian.org/cdimage/weekly-builds/multi-arch/iso-cd/debian-testing-amd64-i386-netinst.iso (used dd to write to flashdrive /dev/sdb) and the ideapad UEFI boot menu now gives me the choice for 'EFI USB Device'. I select it and next screen is GRUB prompt. Something is not right, but it's some progress from before. What this tells me is that the amd64 Ubuntu iso image has efi/boot/bootx64.efi but this ideapad's Firmware needs 32bit .efi file. The Debian img above has both the 64bit and efi/boot/bootia32.efi. Why does it get stuck at grub> is my next mystery to solve. This is starting to sound similar to Ubuntu on Asus X205TA and http://ubuntuforums.org/showthread.php?t=2254322.

Edit #2: So I copied bootia32.efi from the Debian release onto efi/boot/ of Ubuntu 15.04 and tried booting with that, but ii gets stuck at the grub> menu as well, and I could not have it boot vmlinuz. I then noticed that this machine is running windows 10 32bit version, so I went to look for the 32bit Ubuntu version. No luck: neither 15.10, nor 15.04, nor 14.04 have EFI/ in it.

So I went for the Debian i386 version. I got the grub menu, hit Install, and it progressed to the installation screen. The installer asked for language selection, and there I found that it would not accept key presses from the ideapad's own keyboard (later when I chose the graphical install, it would not take mouse input either). I plugged in a USB keyboard which was recognized correctly enabling me to make the menu selections. I plugged in a USB WiFi dongle and it was recognized, but it would not load the rtxxx firmware so that halted my installation.

I switched to a terminal with Alt+F1 and lspci was only showing 5 entries:

00:00.0 Host bridge, 00:02.0 VGA compatible controller
00:14.0 USB controller
00:1a.0 Encryption controller
00:1f.0 ISA bridge

It does not seem like Linux can detect all the hardware. Even /proc/cpuinfo only reports only one processor. I'm afraid that the 4.2 kernel in Debian's debian-testing-i386-netinst.iso (updated at 2015-10-12 12:53) is not ready yet to work with this laptop. I'm almost ready to stop trying (and return it).


I succeeded in installing Ubuntu 32bit. Used ubuntu-15.10-beta2-desktop-i386.iso (thought 15.10 would have better support, did not try the other Ubuntus yet). The key is to use 32bit efi and grub (I took them from Debian 32bit). Here are quick steps:

fdisk /dev/mmcblk0 

create one large vfat, bootable partition, then format it:

mkfs.vfat /dev/mmcblk0p1

then mount the images and the usb card:

mount /dev/mmcblk0p1 /mnt/flshdrv/  
mount ubuntu-15.10-beta2-desktop-i386.iso /mnt/ubuntu/  

from Ubuntu copy:

cp -a /mnt/ubuntu/* /mnt/ubuntu/.disk /mnt/flshdrv/  
mount debian-testing-i386-netinst.iso /mnt/debian/  
mkdir -p /mnt/flshdrv/efi/boot  
cp /mnt/debian/efi/boot/bootia32.efi  /mnt/flshdrv/efi/boot/  

from Debian i386 copy:

cp -a /mnt/debian/boot/grub/* /mnt/flshdrv/boot/grub/

grub directory will then have all the i386 grub items:

$ ls /mnt/debian/boot/grub/  
total 362  
-r--r--r-- 1 root root   5000 Sep  5 21:21 font.pf2  
dr-xr-xr-x 1 root root  32768 Oct 11 20:34 i386-efi/  
dr-xr-xr-x 1 root root   2048 Oct 12 06:51 theme/  
-r--r--r-- 1 root root   2549 Oct 12 06:51 grub.cfg  
-r--r--r-- 1 root root 327680 Oct 12 06:51 efi.img  

We still need the original grub config:

mv /mnt/flshdrv/boot/grub/loopback.cfg /mnt/flshdrv/boot/grub/grub.cfg

then umount /mnt/flshdrv and remove from other machine.

Insert into ideapad 100s (I inserted to extension USB slot of my USB keyboard, you may need a USB hub because you will need a USB Wifi dongle). I had secure boot disabled earlier. Use Alt+F12, choose to boot from usb drive. Proceed installation as usual. Needed USB Wifi dongle for the network. Keyboard and mouse work. Did not try sound, nor internal wifi, nor mmc card. Had to do some of tweaking, ex. stop thermal.service because it caused lots of ACPI errors in dmesg. For some reason after grub it would take ~20sec for vmlinuz to load. Don't know why.

Next I tried with a 64bit version of Debian daily builds. Did the same as above steps (and copied firmware-linux-nonfree.deb to the USB card). After Ubuntu installation finished, booted fine (in 64bit mode), but the kernel in Debian has some modules missing (keyboard and mouse would not work, screen would go blank and machine frees after some activity). So I copied over and installed (in single user mode) Ubuntu's Linux kernel 4.2.0-16 deb package. Upon booting, mouse and keyboard work, and no issues with screen blanking out. The LCD does turn off after ~10min of inactivity (machine is alive), pressing any key turns it back on.

ISSUES:

  • Soundcard does not seem to get recognized.
  • Internal wifi card does not seem to be detected at all.
  • Closing the lid does nothing, doesn't even turn the LCD off.
  • Battery state and percentage is reported at 100%
  • Sleep mode is not supported

From the windows list of devices: sound is Intel SST Audio Device (WDM), network is Realtek RTL8723BS Wireles Lan SDIO Network Adapter. Here is the output of lspci:

lspci -v:

00:00.0 Host bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register (rev 0f)
      Subsystem: Lenovo Device 390c
      Flags: bus master, fast devsel, latency 0
      Kernel driver in use: iosf_mbi_pci

00:02.0 VGA compatible controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Graphics & Display (rev 0f) (prog-if 00 [VGA controller])
      Subsystem: Lenovo Device 390c
      Flags: bus master, fast devsel, latency 0, IRQ 248
      Memory at 90000000 (32-bit, non-prefetchable) [size=4M]
      Memory at 80000000 (32-bit, prefetchable) [size=256M]
      I/O ports at 1000 [size=8]
      Expansion ROM at <unassigned> [disabled]
      Capabilities: <access denied>
      Kernel driver in use: i915

00:14.0 USB controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series USB xHCI (rev 0f) (prog-if 30 [XHCI])
      Subsystem: Lenovo Device 390c
      Flags: bus master, medium devsel, latency 0, IRQ 201
      Memory at 90800000 (64-bit, non-prefetchable) [size=64K]
      Capabilities: <access denied>
      Kernel driver in use: xhci_hcd

00:1a.0 Encryption controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine (rev 0f)
      Subsystem: Lenovo Device 390c
      Flags: bus master, fast devsel, latency 0, IRQ 246
      Memory at 90700000 (32-bit, non-prefetchable) [size=1M]
      Memory at 90600000 (32-bit, non-prefetchable) [size=1M]
      Capabilities: <access denied>
      Kernel driver in use: mei_txe

00:1f.0 ISA bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Power Control Unit (rev 0f)
      Subsystem: Lenovo Device 390c
      Flags: bus master, medium devsel, latency 0
      Capabilities: <access denied>
      Kernel driver in use: lpc_ich

Sound related error in dmesg:

sst-acpi: cannot load firmware intel/fw_sst_0f28.bin-i2s_master
byt-rt5640 byt-rt5640: ASoC: CPU DAI baytrail-pcm-audio not registered

Tried with https://chromium.googlesource.com/chromiumos/third_party/linux-firmware/+/refs/heads/stabilize-5339.B/intel/ as explained in http://ubuntuforums.org/showthread.php?t=2254631 and I also get error:

baytrail-pcm-audio: ipc: error DSP boot timeout

I tried putting the laptop to sleep via systemctl suspend and it went to sleep alright, but I could not wake it up. Had to do a power reset.

Conclusions: The laptop is usable, light and relatively responsive, Linux detects four processors and with light usage it stays very cool (~34 °C), and battery lasts >8 hours. I will probably return the unit because without sound, wireless, battery information, and sleep ability it's just not worth keeping when there are other alternatives out there.

Hope this is useful to someone.