Medion Lifetab S9714 (medion-kai)

From postmarketOS
Jump to: navigation, search
Lenovo Medion Lifetab S9714
Medion Lifetab S9714
Medion Lifetab S9714
Manufacturer Lenovo
Name Medion Lifetab S9714
Codename medion-kai
Released 2012
Original software Android 4.0 / 4.1
Hardware
Chipset NVIDIA TEGRA 3
CPU NVIDIA TEGRA 3 Quad-Core 1.2 GHz
GPU NVIDIA TEGRA 3 (Ultra Low Power GeForce)
Display 1280 x 800 touchscreen
Storage 32 GB internal storage
Memory 1 GB
Architecture armv7
Features
USB Networking
Works
Flashing
Works
Touchscreen
Works
Display
Works
WiFi
Xwayland
FDE
Mainline
Battery
3D Acceleration
Accelerometer
Audio
Bluetooth
Camera
GPS
Mobile data
SMS
Calls
USB OTG



Contributors

Maintainer(s)

Users owning this device


How to enter flash mode

To start fastboot mode:

  1. boot into recovery by holding volume-down and power button at the same time, then
  2. adb reboot bootloader

To unlock bootloader in fastboot mode (CAUTION: this will erase userdata! Backup before doing this!): fastboot oem unlock

Installation

My procedure was:

  1. Backup all important user data
  2. Unlock bootloader (see above)
  3. Install CWM recovery by going into fastboot mode and then running fastboot flash recovery A2109_CWMrecovery-6.0.1.9d.img
  4. Backup Android installation on SD card
  5. Follow installation guide (note that flashing rootfs can take a few minutes without feedback, just wait)
  6. After flashing has finished, the screen should show the Medion logo and a notice saying "Cold booting linux"; after that, the postmarkedOS logo and then the demo should come up.

Notes

Apparently, the device was manufactured by Lenovo for vendor Medion and is similar to Lenovo's A2110 / A2109 boards. Some information about the IdeaTab A2109.


How bonsaiblue made wifi work

How bonsaiblue made wifi work (minus the confusing detours). Inspired by the very helpful How_drebrez_made_wifi_work.

  • Find information online about the wifi chip of the device: it uses Broadcom BCM4330 for wifi 11b/g/n and Bluetooth 3.0
  • Read the WiFi page, in particular the part about Broadcom WiFi.
  • Since that page mentions kernel config parameters, grep for "BCM" in the devices kernel config:
   grep -i "BCM" pmaports/device/linux-medion-kai/config-medion-kai.armv7
   ...
   CONFIG_BCMDHD_FXN_FW_PATH="/system/vendor/firmware/bcm4330/fw_bcmdhd.bin"
   CONFIG_BCMDHD_FXN_NVRAM_PATH="/system/etc/nvram_4330.txt"
   CONFIG_BCMDHD_FXN_195_89=m
   ...
  • So the wifi chip needs a kernel module (CONFIG_BCMDHD_FXN_195_89=m) and firmware and config files (fw_bcmdhd.bin, nvram_4330.txt).
  • Download and unpack the vendor's OTA ROM zip (link in the Medion_Lifetab_S9714_(medion-kai)#See_also section). (Other ideas on how to find firmware files are on the How_to_find_device-specific_information#Firmware_files page.)
  • In the unpacked ROM folder, look for system/vendor/firmware/bcm4330/fw_bcmdhd.bin and system/etc/nvram_4330.txt.
  • FOR TESTING ONLY copy both files to aports/device/device-medion-kai. When done with testing, a firmware package should be created, see Device_specific_package#Proprietary_firmware_or_userland_blobs.
  • Edit device/linux-medion-kai/APKBUILD to get kernel modules built and installed:
    • Increase pkgrel by one.
    • At the end of the build() section, add this to build the modules:
   # the 'no-pic' flag is necessary to avoid the
   # error 'Unknown symbol _GLOBAL_OFFSET_TABLE_ (err 0)' when loading the module
   make ARCH="$_carch" CC="${CC:-gcc}" CFLAGS_MODULE="-fno-pic" \
       KBUILD_BUILD_VERSION="$((pkgrel + 1))-postmarketOS" modules
    • At the end of the package() section, add this to install the modules:
   # Modules
   cd "$builddir"
   unset LDFLAGS
   make ARCH="$_carch" CC="${CC:-gcc}" \
       KBUILD_BUILD_VERSION="$((pkgrel + 1))-postmarketOS" \
       INSTALL_MOD_PATH="$pkgdir" INSTALL_MOD_STRIP=1 \
       modules_install
  • Edit device/linux-medion-kai/config-medion-kai.armv7 and set the path where the wifi firmware is expected to somewhere in /lib/firmware/postmarketos:
   CONFIG_BCMDHD_FXN_FW_PATH="/lib/firmware/postmarketos/bcm4330/fw_bcmdhd.bin"
   CONFIG_BCMDHD_FXN_NVRAM_PATH="/lib/firmware/postmarketos/bcm4330/nvram_4330.txt"
  • Rebuild linux-medion-kai and create an image file:
   pmbootstrap checksum linux-medion-kai && \
   pmbootstrap kconfig check -f && \
   pmbootstrap build linux-medion-kai --force && \
   pmbootstrap install
  • Chroot into the image file and check if modules have been built:
   pmbootstrap chroot -r
   
   find /lib/modules/
   
  • In particular there should be /lib/modules/3.1.10/kernel/drivers/net/wireless/bcmdhd_fxn_195_89/bcmdhd.ko. Leave chroot again (with exit).
  • In device/device-medion-kai, add a new file modules-load.conf and have the module found in the previous step loaded at boot time:
   # This file contains the names of kernel modules that should be loaded
   # at boot time, one per line. Lines beginning with "#" are ignored.
   # wifi module
   bcmdhd
  • Edit device/device-medion-kai/APKBUILD
    • Increase pkgrel by one.
    • Add to source files and declare a new subpackage:
   subpackages="$pkgname-nonfree-firmware:nonfree_firmware"
   source="deviceinfo
       fw_bcmdhd.bin
       nvram_4330.txt"
    • At the end of the package() section, add this to put modules-load.conf in the right place on the device:
   install -Dm644 "$srcdir"/modules-load.conf \
          "$pkgdir"/etc/modules-load.d/00-${pkgname}.conf
   nonfree_firmware() {
          pkgdesc="Lenovo Medion Lifetab S9714 wifi firmware"
          mkdir "$subpkgdir"
          install -D -m644 "$srcdir"/nvram_4330.txt \
                  "$subpkgdir"/lib/firmware/postmarketos/bcm4330/nvram_4330.txt
          install -D -m644 "$srcdir"/fw_bcmdhd.bin \
                  "$subpkgdir"/lib/firmware/postmarketos/bcm4330/fw_bcmdhd.bin
   }
   
  • Rebuild device-medion-kai and recreate the image file:
   pmbootstrap checksum device-medion-kai && \
   pmbootstrap build device-medion-kai --force && \
   pmbootstrap install
  • Flash image to device
   pmbootstrap flasher flash_rootfs && pmbootstrap flasher flash_kernel    
  • ssh into the device via USB_Network and run lsmod to see if the kernel modules has been loaded correctly:
   lsmod
   Module                  Size  Used by
   bcmdhd                387306  0
   cfg80211              157302  1 bcmdhd
  • If the module isn't listed, check that it's on the device (find /lib/modules/ -iname "*bcm*ko") and what happens if you try to insert it manually (modprobe bcmdhd || dmesg | tail -n 20). If modprobe doesn't find the module you can also try insmod /lib/modules/3.1.10/kernel/drivers/net/wireless/bcmdhd_fxn_195_89/bcmdhd.ko || dmesg | tail -n 20.
    If dmesg gives Unknown symbol _GLOBAL_OFFSET_TABLE_ you may be missing the -fno-pic flag when building the kernel modules.
  • Once the module is loaded correctly, continue with the steps on the Wifi page:
    • Check if the interface is available
   ip link
   ...
   7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
       link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
    • Scan for available wifis:
   nmcli device wifi list ifname wlan0
    • Connect to your wifi:
   nmcli device wifi connect "$SSID" password "$PASSWORD" ifname wlan0


Related links

PCI id according to system/etc/nvram_4330.txt: 14e4:4360

See also