Jeremy Sands

Res publica non dominetur

Gentoo Linux on the Lenovo Thinkpad X1 Tablet Third Gen (X1Y3 / 20KJ / 20KK)

The following write up covers my trials and tribulations getting everything working properly on this device. While my instructions are Gentoo specific, this should be useful no matter what distro you’re running. If you are NOT using Gentoo, just keep in mind when I enable “USE flags” for packages in Gentoo, this automatically pulls in any dependencies necessary to enable those features. In your distro, it may be necessary to install additional packages not listed. For example: To install Apache with mod_php in Gentoo you can simply enable the “apache2” USE flag in dev-lang/php. In Fedora or Debian … you’ll need to install a separate package for mod_php (typically something like httpd-php7 or similar). Also bear in mind I’m using KDE Plasma for my DE, so you’ll need to swap out with equivalent things in your DE of choice when it comes to that. With that caveat out of the way … let’s get to hardware info and setup.

Hardware Info

# hwinfo --short all
cpu:                                                            
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3775 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3636 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3700 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3747 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3700 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3692 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3712 MHz
         Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 3711 MHz

keyboard:            Lenovo ThinkPad X1 Tablet Thin Keyboard Gen 3
  /dev/input/event2  AT Translated Set 2 keyboard

mouse:              Lenovo ThinkPad X1 Tablet Thin Keyboard Gen 3
  /dev/input/mice   Wacom HID 511A Pen
  /dev/input/mice   Wacom HID 511A Finger

monitor:            LG Display LCD Monitor

graphics card:      Intel VGA compatible controller

sound:              Intel Audio device

storage:            Samsung Electronics Non-Volatile memory controller

network:  wlp4s0    Intel WLAN controller

network interface:
  wlp4s0               Ethernet network interface
  bond0                Ethernet network interface
  lo                   Loopback network interface

disk:    /dev/nvme0n1  Samsung Electronics Disk

partition:
  /dev/nvme0n1p1       Partition
  /dev/nvme0n1p2       Partition
  /dev/nvme0n1p3       Partition
  /dev/nvme0n1p4       Partition
  /dev/nvme0n1p5       Partition
  /dev/nvme0n1p6       Partition
  /dev/nvme0n1p7       Partition

usb controller:        Intel USB Controller

bios:                  BIOS

bridge:                Intel PCI bridge
                       Intel ISA bridge
                       Intel PCI bridge
                       Intel Host bridge
                       Intel PCI bridge
                       Intel PCI bridge

hub:                   Linux Foundation 2.0 root hub
                       Linux Foundation 3.0 root hub

memory:                Main Memory

bluetooth:             Intel Bluetooth Device

unknown:               FPU
                       DMA controller
                       PIC
                       Keyboard controller
                       Intel Memory controller
                       Intel Sky Lake Gaussian Mixture Model
                       Intel Signal processing controller
                       Realtek Unclassified device
                       Intel Unclassified device
                       Intel Signal processing controller
                       Intel Multimedia controller
                       Intel Communication controller
                       Intel Signal processing controller
                       Intel Signal processing controller
                       Intel Signal processing controller
                       Intel Signal processing controller
                       Intel Signal processing controller
                       Intel SMBus
                       Intel Sky Lake Imaging Unit
                       Lite-On Integrated Camera
                       Lenovo ThinkPad X1 Tablet Thin Keyboard Gen 3
# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 08)
00:05.0 Multimedia controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Imaging Unit (rev 01)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:13.0 Non-VGA unclassified device: Intel Corporation Sunrise Point-LP Integrated Sensor Hub (rev 21)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:14.3 Multimedia controller: Intel Corporation Device 9d32 (rev 01)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:15.2 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #2 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d11 (rev f1)
00:1c.3 PCI bridge: Intel Corporation Device 9d13 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)
00:1e.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO UART Controller #0 (rev 21)
00:1e.3 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO SPI Controller #1 (rev 21)
00:1f.0 ISA bridge: Intel Corporation Intel(R) 100 Series Chipset Family LPC Controller/eSPI Controller - 9D4E (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader (rev 01)
04:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
05:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981
# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 8087:0a2b Intel Corp. 
Bus 001 Device 003: ID 04ca:706b Lite-On Technology Corp. 
Bus 001 Device 005: ID 17ef:60b5 Lenovo 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Wacom HID 511A Pen stylus                 id=15   [slave  pointer  (2)]
⎜   ↳ Wacom HID 511A Finger touch               id=16   [slave  pointer  (2)]
⎜   ↳ Wacom HID 511A Pen eraser                 id=23   [slave  pointer  (2)]
⎜   ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3 Consumer Control   id=11   [slave  pointer  (2)]
⎜   ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3 Mouse      id=13   [slave  pointer  (2)]
⎜   ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3 Touchpad   id=22   [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)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=14   [slave  keyboard (3)]
    ↳ Intel Virtual Button driver               id=17   [slave  keyboard (3)]
    ↳ Intel HID events                          id=18   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=19   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=20   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=21   [slave  keyboard (3)]
    ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3    id=8    [slave  keyboard (3)]
    ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3 System Control     id=9    [slave  keyboard (3)]
    ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3 Wireless Radio Control     id=10   [slave  keyboard (3)]
    ↳ Chicony ThinkPad X1 Tablet Thin Keyboard Gen 3 Consumer Control   id=12   [slave  keyboard (3)]

 

 

Kernel Config

Quite a few things you’ll need aren’t enabled by default by genkernel, so you’ll want to go over this list carefully if you are using Gentoo. If you’re using a binary distro you’ll still not want to entirely skip this over, as I did have to patch my kernel to get support for the trackpoint. Speaking of, here’s a link to the patch which is in the Linux kernel, but less than 30 days old as of the time of this writing. This means unless you’re rocking kernel 5.0.2 or so or newer (or have backports that recent) … you’ll need to manually patch your kernel too for trackpoint support. You’ll want the following options enabled:
CONFIG_NVME_CORE=m
CONFIG_BLK_DEV_NVME=m

CONFIG_THINKPAD_ACPI=m  
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
CONFIG_THINKPAD_ACPI_VIDEO=y
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

CONFIG_IWLWIFI=m  
CONFIG_IWLWIFI_LEDS=y

CONFIG_TOUCHSCREEN_WACOM_W8001=m
CONFIG_TOUCHSCREEN_WACOM_I2C=m
CONFIG_HID_WACOM=m

CONFIG_HID_MULTITOUCH=m
CONFIG_HID_GENERIC=y

CONFIG_INPUT=y
CONFIG_INPUT_LEDS=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_KEYBOARD=y
CONFIG_INPUT_MOUSE=y
CONFIG_INPUT_TABLET=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_INPUT_MISC=y

CONFIG_USB_VIDEO_CLASS=m  

CONFIG_BT=m
CONFIG_BT_HIDP=m
CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_INTEL=m
CONFIG_BT_HCIBTUSB=m

CONFIG_SND_HDA=m
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PREALLOC_SIZE=2048  # Because of PulseAudio

CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y



 

 

Recommended Packages

# eix powertop
[I] sys-power/powertop
     Available versions:  2.8 2.9 **9999 {X nls unicode KERNEL="linux"}
     Installed versions:  2.9(01:44:36 AM 03/22/2019)(X nls unicode KERNEL="linux")
     Homepage:            https://01.org/powertop/
     Description:         tool that helps you find what software is using the most power

# eix fwts
[I] sys-apps/fwts
     Available versions:  (~)15.12.00 (~)17.02.00
     Installed versions:  17.02.00(04:06:11 AM 03/22/2019)
     Homepage:            https://wiki.ubuntu.com/Kernel/Reference/fwts
     Description:         Firmware Test Suite

# eix onboard
[I] app-accessibility/onboard [1]
     Available versions:  (~)1.4.1^m
     Installed versions:  1.4.1^m(08:13:09 PM 03/20/2019)(PYTHON_TARGETS="python3_6 -python3_4 -python3_5")
     Homepage:            https://launchpad.net/onboard
     Description:         Onscreen keyboard for everybody who cant use a hardware keyboard
[1] "salfter" /var/lib/layman/salfter (overlay)

# eix wacom
[I] dev-libs/libwacom
     Available versions:  0.30 {doc static-libs}
     Installed versions:  0.30(05:28:59 PM 03/04/2019)(-doc -static-libs)
     Homepage:            https://github.com/linuxwacom/libwacom
     Description:         Library for identifying Wacom tablets and their model-specific features

[I] kde-misc/wacomtablet
     Available versions:  (5) 3.1.1
       {debug +handbook test}
     Installed versions:  3.1.1(5)(05:30:05 PM 03/04/2019)(handbook -debug -test)
     Homepage:            https://www.linux-apps.com/content/show.php?action=content&content=114856
     Description:         KControl module for Wacom tablets

[I] x11-drivers/xf86-input-wacom
     Available versions:  0.36.0-r2 {debug KERNEL="linux"}
     Installed versions:  0.36.0-r2(02:39:15 AM 03/05/2019)(-debug KERNEL="linux")
     Homepage:            http://linuxwacom.sourceforge.net/
     Description:         Driver for Wacom tablets and drawing devices

# eix intel-microcode
[I] sys-firmware/intel-microcode
     Available versions:  20180807a_p20190309^mbsd {hostonly initramfs +split-ucode vanilla KERNEL="linux"}
     Installed versions:  20180807a_p20190309^mbsd(04:23:53 AM 03/22/2019)(initramfs split-ucode -hostonly -vanilla KERNEL="linux")
     Homepage:            http://inertiawar.com/microcode/ https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=28087
     Description:         Intel IA32/IA64 microcode update data

# eix blue | grep -A2 -B3 Installed
[I] dev-qt/qtbluetooth
     Available versions:  (5) 5.11.3(5/5.11)^t ~5.12.1(5/5.12)^t ~5.12.2(5/5.12)^t
       {debug qml test}
     Installed versions:  5.11.3(5/5.11)^t(04:13:59 PM 03/04/2019)(qml -debug -test)
     Homepage:            https://www.qt.io/
     Description:         Bluetooth support library for the Qt5 framework
--
[I] kde-frameworks/bluez-qt
     Available versions:  (5) 5.54.0(5/5.54) ~5.56.0(5/5.56)
       {debug doc test}
     Installed versions:  5.54.0(5/5.54)(02:37:48 PM 03/01/2019)(-debug -doc -test)
     Homepage:            https://www.kde.org/
     Description:         Qt wrapper for Bluez 5 DBus API
--
[I] kde-plasma/bluedevil
     Available versions:  (5) 5.14.5 ~5.15.3
       {debug}
     Installed versions:  5.14.5(5)(03:52:10 PM 03/03/2019)(-debug)
     Homepage:            https://cgit.kde.org/bluedevil.git
     Description:         Bluetooth stack for KDE Plasma
--

[I] net-wireless/bluez
     Available versions:  5.49-r1(0/3) 5.50-r1(0/3) {alsa btpclient cups debug deprecated doc experimental extra-tools +mesh +obex +readline selinux systemd test test-programs +udev user-session ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" PYTHON_TARGETS="python2_7"}
     Installed versions:  5.50-r1(0/3)(12:49:58 PM 03/04/2019)(alsa btpclient cups deprecated extra-tools mesh obex readline udev -debug -doc -experimental -selinux -systemd -test -test-programs -user-session ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="64 -32 -x32" PYTHON_TARGETS="python2_7")
     Homepage:            http://www.bluez.org
     Description:         Bluetooth Tools and System Daemons for Linux

# eix fwupd
[I] sys-apps/fwupd
     Available versions:  ~1.2.4-r2 (~)1.2.5 {colorhug dell doc elogind +gpg +man nvme pkcs7 redfish systemd test thunderbolt uefi PYTHON_SINGLE_TARGET="python3_4 python3_5 python3_6 python3_7" PYTHON_TARGETS="python3_4 python3_5 python3_6 python3_7"}
     Installed versions:  1.2.5(11:39:56 PM 03/21/2019)(gpg man nvme thunderbolt uefi -colorhug -dell -doc -elogind -pkcs7 -redfish -systemd -test PYTHON_SINGLE_TARGET="python3_6 -python3_4 -python3_5 -python3_7" PYTHON_TARGETS="python3_6 -python3_4 -python3_5 -python3_7")
     Homepage:            https://fwupd.org
     Description:         Aims to make updating firmware on Linux automatic, safe and reliable

# eix terminus
[I] media-fonts/terminus-font
     Available versions:  4.46 ~4.47 {X a-like-o +center-tilde distinct-l +pcf +pcf-unicode-only +psf quote ru-dv +ru-g ru-i ru-k}
     Installed versions:  4.46(04:53:28 PM 03/04/2019)(X center-tilde pcf pcf-unicode-only psf ru-g -a-like-o -distinct-l -quote -ru-dv -ru-i -ru-k)
     Homepage:            http://terminus-font.sourceforge.net/
     Description:         A clean fixed font for the console and X11




Write by Stylus Labs:  http://www.styluslabs.com

 

 

Setup Dual Boot Quickly

The following is how I setup things so that I could install Linux setup for dual boot while Windows 10 installed a billion updates. I keep Windows 10 around mostly to test websites in IE/Edge, but it is also an easy way to update the BIOS and firmware through the Lenovo software update thing.

1) Install VirtualBox including the Extension Pack for Windows.

2) Download SystemRescueCD 5.3.2 (the last version they released based on Gentoo, but still quite current) and set it up in VirtualBox as a boot CDROM.

3) Use Windows Disk Manager (search “Disk Manager” in the start menu) to resize Windows and create new partitions. DO NOT have Windows format the partitions for you. Having Windows resize itself is necessary because Lenovo ships Windows by default BitLocker encrypted. Windows can shrink itself on a running drive and create new partitions on said drive. I personally setup a root partition, LUKS encrypted home partition, and swap partition (for hibernation purposes, and because you’d be surprised how much memory webkit or chromium take when compiling).

4) Use the following trick to be able to mount real partitions as drives in VirtualBox. Note this requires launching VirtualBox and the Windows CMD prompt as Administrator.

5) Go ahead and update Windows and use the Lenovo portal to update system firmware, BIOS, drivers, etc. Note that if you have to reboot at any time you can simply have VirtualBox freeze the VM and you can then pick up your Linux install where you left off after rebooting.

6) Complete installation of Linux using your distro’s instructions, but keeping in mind the specific hardware and settings mentioned above.

 

 

Post Install Tweaks

BIOS Changes
You’ll definitely want BIOS assist mode on for Thunderbolt. I also in general turn off all the Intel ME/TPM stuff that I possibly can. If Lenovo has shipped an updated BIOS by the time you read this (see below), be sure to enable “Linux” mode for sleep in the BIOS.

Important USE Flags

# cat /etc/portage/package.use/*
net-wireless/bluez btpclient extra-tools deprecated
sys-apps/fwupd nvme thunderbolt uefi
>=sys-boot/grub-2.02-r1 mount
sys-firmware/intel-microcode initramfs
app-portage/layman subversion
media-sound/pulseaudio native-headset ofono-headset

Intel Microcode
This will help patch some (but not all) CPU vulnerabilities as well as improve any issues stemming from errata relating to bugs in CPU design. Edit/Add the following line to /etc/default/grub to load the Microcode at boot: GRUB_EARLY_INITRD_LINUX_CUSTOM=”intel-ucode.cpio” Run the following commands, noting that the first is to install if you’re not using Gentoo:

# emerge -va --quiet sys-firmware/intel-microcode

# iucode_tool -S --write-earlyfw=/boot/intel-ucode.cpio /lib/firmware/intel-ucode/* # grub-mkconfig -o /boot/grub/grub.cfg (Or whatever the command is to regenerate the GRUB2 config on your distro)

Custom DSDT Tables for S3 Sleep
As of the time of this writing, Lenovo has not shipped a BIOS for this machine with proper S3 listings for deep sleep in the BIOS. This is because this newer Intel system supports a software deep suspend that gives the OS greater granular control over what goes to sleep and how deeply it goes to sleep. This is sadly a highly Windows-centric and specific feature and was pushed by Microsoft as their preferred way to do things. Lenovo has shipped updated BIOS images for similar Thinkpad hardware giving a new BIOS option for proper S3 sleep in Linux. If you don’t patch the DSDT tables, you’ll get maybe a half day to a day on sleep. If you have proper S3 sleep it’s more like a week of sleep time. Read here (be sure to scroll down!) for the somewhat involved details for creating your own DSDT tables and patching them over your BIOS ACPI tables at boot time. Note this means you’ll be modifying the GRUB2 line you’ve already touched above to deal with Microcode. And since you just modified GRUB2 let’s go ahead and cover all the changes we’re going to make in GRUB2:

GRUB2 Tweaks
Note that by adding the “mount” USE flag to GRUB2 above, if you now install os-prober Gentoo will automatically search for Windows installs and add them to your GRUB2 config. In addition I’ve changed the following settings in my /etc/default/grub:

GRUB_FONT=/boot/grub/terminus.pf2   # High DPI monospace console font
GRUB_GFXMODE=3000x2000              # Native Resolution
GRUB_CMDLINE_LINUX_DEFAULT="quiet mem_sleep_default=deep resume=/dev/nvme0n1p4" # Sleep line default behavior after kernel 4.18, resume should point to your swap partition (or file)
GRUB_EARLY_INITRD_LINUX_CUSTOM="intel-ucode.cpio acpi_override"
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_BACKGROUND="/boot/grub/aurora.png"  # Use any 3000x2000 png you want

KDE Plasma High DPI
KDE System Settings has everything you’ll need to tweak things for High DPI. Of particular note is the force font DPI scaling setting under fonts. The taskbar scales well, though some GTK apps like connman do look like you’re zooming in at 500% on a tiny icon.

Putting Your Powertop/S3 Changes To The Test
If you have chosen to install fwts, unplug your laptop on full battery and then run:

# fwts --power-states

It will now conduct a test of S3 and S4 and report back errors and estimated battery life duing sleep.

 

 

Unexplored/Unsupported

I’m not interested in tablet auto-rotation (I get annoyed by it flipping too much while I’m walking) so I have a tray widget that lets me use KDE’s control panel to adjust the orientation on demand any time I want. It’s possible to do auto-rotation from my understanding (if your desktop environment supports that sort of thing) if you’re so inclined. I’m simply not inclined.

The fingerprint reader is totally unsupported though efforts have been made to reverse engineer it.

lm-sensors does not seem to have the necessary recognition of the onboard hardware monitoring. This feels like it has been the standard operating procedure for as long as I can remember with lm-sensors … if you buy something new, don’t expect lm-sensors support off the bat. It took a year or two with all my desktop builds before support for their HW sensors trickled down into kernels I was running. Coretemp and ACPI temperature readouts work just fine, but it sees a proper sensor it just can’t use. Output from sensors-detect and then sensors:

# sensors-detect 
(snipped output)
Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): 
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     Yes
Found unknown chip with ID 0x2701
(snipped output)


# sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +34.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +31.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +32.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +31.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +32.0°C  (high = +100.0°C, crit = +100.0°C)

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +35.0°C  (crit = +128.0°C)

iwlwifi-virtual-0
Adapter: Virtual device
temp1:        +33.0°C  

thinkpad-isa-0000
Adapter: ISA adapter
fan1:           0 RPM

Thanks to the following pages which proved useful in helping get this stuff figured out:

X1Y3 ArchLinux Wiki Page
Reddit /r/thinkpad thread
Another Reddit /r/thinkpad thread

How to create your own custom auto-delivered newspaper every day

I had an itch for some time to create a system that would give the area’s daily news at a glance, including comics. I finally scratched that itch. Here is the result, in case anybody else has such a desire.

Required software:


net-mail/mpack
Homepage: ftp://ftp.andrew.cmu.edu/pub/mpack/
Description: Command-line MIME encoding and decoding utilities

 


app-text/poppler
Homepage: https://poppler.freedesktop.org/
Description: PDF rendering library based on the xpdf-3.0 code base

 


media-gfx/imagemagick
Homepage: http://www.imagemagick.org/
Description: A collection of tools and libraries for many image formats

 


app-text/qpdf
Homepage: http://qpdf.sourceforge.net/
Description: Command-line tool for structural, content-preserving transformation of PDF files

 

And lastly Dosage, a project on GitHub specifically to download web comics. Think of it as JDownloader2 or Youtube-dl … but specifically for web comics. The easiest way to install this is with pip:

 


dev-python/pip
Homepage: https://pip.pypa.io/ https://pypi.python.org/pypi/pip/ https://github.com/pypa/pip/
Description: Installs python packages -- replacement for easy_install

 

… Using the following command …

 


pip install --user git+https://github.com/webcomics/dosage

 

This will install dosage (at least for me on Gentoo) to ~/.local/bin/. Invoking dosage –list will display the prodigious number of comics dosage can automatically download.

So with the tools in place, here’s a very crude script to get the job done. Please read the header of the script, it explains quite a lot. But the end result is that I receive delivered via email a daily comic and newspaper digest to my Kindle. It will be trivial to expand this to include actual news articles and more via RSS feeds and other pdf command line tools, but given that the quality of print journalism is so low that I no longer read virtually anything other than a glance at local headlines, I don’t have much motivation to flush that out at this time. Note this requires your system mailer to be valid, but it is trivial to have your system mailer hook into and use your GMail account. (Google it!)

newspaper-gen.sh (TXT file link)

Quiet Down A Loud Optical Drive In Linux

Or, for an alternate title, “How to manually set a speed on your optical drive”.

I have an aging Thinkpad T61 (maybe the last one to have shipped to North America with SuSe Linux pre-installed!), and it has an optical drive that creates quite a noise and serious vibrations when running at full tilt. So if you need to do something with your optical drive want it to run nice and quiet in Linux, try using hdparm:

hdparm -E4 /dev/sr0

The -E is for the speed. So -E4 is 4x. -E8 is 8x. Etc. The last is your device which in all recent Linux versions starts with /dev/sr0 (then /dev/sr1 and so on).

Wireless Bridge Mode on Asus RT-AC66U

So you took the plunge to get a good router instead of a flaky $40 plastic box of crap. Good choice. But if you use a wireless bridge then you probably should be aware of the following problem and fix.

There are numerous huge gaping security holes in the older (and possibly, depending on when you bought it, STOCK version) of the firmware on the routers. Now luckily Asus has patched those holes (download the latest firmware on the Asus website, as the auto-updater is a bit flaky on finding the very latest version). However, the latest patched firmware makes media bridge mode an exercise in frustration. The bridge mode Asus RT-AC66U will be very flaky. Usually in about a day it stops issuing new DHCP leases and doesn’t renew DHCP leases when they are requested. But clients with an existing good lease will still route correctly. Eventually DNS will stop resolving properly and that expensive router becomes a well designed paperweight. The solution is to keep the wireless router on the most recent firmware, but to keep the media bridge on firmware version: 3.0.0.4.374_726 Note that this means your router is vulnerable to attack from those connected into it … but somebody physically wired in to your media bridge probably has more delicious (and worthwhile) things to exploit than your media bridge.

For those wondering if third party firmwares will solve this bug, I have tried RMerlin’s firmwares and they seem to suffer from the same issue. Deep deep Googling around suggests there is an actual defect in the chipset inside the Asus RT-AC66U causing the blaky bridge performance which requires detailed attention in firmware to mitigate.

Hope this helps people like me who depend upon media bridge mode on the Asus RT-AC66U but want at least their primary router to not be a gaping security hole.

How to add Folding@Home Screensaver (FAHScreensaver) to XScreenSaver

I found myself wanting to put FAHScreensaver in as a proper screensaver in Linux, partially because it looks nice but mostly because the idle detection in Linux by Folding@Home seems to be broken. So here are some steps to make that happen. These steps assume you have root or otherwise privileged access to the machine in question:

Continue reading →

How to squeeze the most of your ancient Thinkpad T20, T21, and T22 on Linux

If you’re like me, you just can’t bring yourself to get rid of a perfectly usable computer, particularly an old Thinkpad workhorse. However, in the case of my Thinkpad T21, even in Linux it is being forced into obsolescence, primarily by the graphics card (01:00.0 VGA compatible controller: S3 Graphics Ltd. 86C270-294 [SavageIX-MV] (rev 13)). I hope my tips in this article help others like me squeeze every last drop out of their machines.

Continue reading →

How to use WatchESPN / ESPN3 in Linux

So you pay for a cable/dish subscription, and want to be able to use the WatchESPN/ESPN3 website to watch live content. But for some reason it just doesn’t work on Linux. Turns out, the Adobe Flash plugin depends upon the now defunct HAL (Hardware Abstraction Layer) to assist in mediation of DRM protected content. The solution is to install hal-flash. Note the solution will ONLY WORK on browsers which use the official Adobe Flash plugin (Firefox, Opera, etc). This will NOT work on Google’s “Pepper” flash player in Chrome/Chromium.

Info on hal-flash:

$ eix hal-flash
[I] media-libs/hal-flash
     Available versions:  0.2.0_rc1
     Installed versions:  0.2.0_rc1(17:56:24 11/20/13)
     Homepage:            http://github.com/cshorler/hal-flash http://build.opensuse.org/package/show/devel:openSUSE:Factory/hal-flash
     Description:         A libhal stub library forwarding to UDisks for www-plugins/adobe-flash to play DRM content

A ham radio operator’s guide to the 2014 SouthEast LinuxFest

 

Simplex

Talk-In Frequency (Simplex): 147.555

Local Repeaters:

145.23- | May require Tone 118.8 MHz – Operated by Mecklenburg ARS

Located on Spencer Mountain, its antenna is at 1574 feet above sea level, which is almost 900 feet above average terrain. The Johnson CR1100 puts out about 100 watts ERP into a four bay commercial dipole, and is controlled by a Link Communications RLC-Club controller. This repeater covers North to West to South of its location particularly well. It’s the MARS “handheld rubber duck coverage” from many hiking trails in the mountains.

145.29- | May require Tone 118.8 MHz – Operated by Mecklenburg ARS

Located on top of 50 stories in uptown Charlotte, its antenna is at 1333 feet above sea level, which is about 583 feet above average terrain. The Johnson CR1100 puts out about 100 watts ERP into a Diamond tri-band vertical, which is painted Carolina blue to blend with the uptown sky. This repeater is often linked with 444.600 for use in many Charlotte public service events. It’s also the MARS emergency powered backup repeater for ARES events and nets.

224.400- | May require Tone 118.8 MHz – Operated by Mecklenburg ARS

It is located in the same cabinet along with 145.29 and 444.600, and uses the same controller and antenna. The repeater itself is a Kendecom KRP5000 and puts out about 20 watts ERP on a nice quiet band.

444.600- | Requires Tone 118.8 MHz – Operated by Mecklenburg ARS

Originally located on Independence Blvd, it was moved to the commn cabinet, controller, and antenna, along with 145.29 and 224.400 at the top of Charlotte. The repeater is a Johnson CR1010 running at about 100 watts ERP. The subaudible tone access of 118.8 Mhz is needed to keep the uptown RF out of this repeater. 444.600 has interesting surprisingly good coverage in Mecklenburg and surrounding counties. When it’s linked with 145.29 it provides handheld rubber duck coverage for many Charlotte public service events, particularly those in the big building uptown RF shadows.

146.94- | May require Tone 118.8 MHz – Operated by Mecklenburg ARS – Net 9PM every night

Located on Orr Rd in northeast Charlotte, its antenna is at 908 feet above sea level, which is almost 200 feet above average terrain. The General Electric Master II puts out about 100 watts ERP into a four bay commercial dipole, and is controlled by a Link Communications RLC-Club controller. This repeater reaches out to many surrounding counties in all directions, and is our primary repeater for most of our 2 meter activities including ARES events.

Repeaters a bit further away:

146.610- | Operated by Blue Ridge ARS – Net every night at 9:00 PM

Located atop Ceasar’s Head Mountain in extreme northern Greenville County, SC. Linked to EchoLink below.

Echolink Node 551672 (W4NYK-R)

Operated by BRARS and linked to 146.610- repeater.

145.190- | Operated by Western Carolina ARS – Net every Saturday at 9 PM

Superb signal and incredible reach across several states – Located on Mount Mitchell, Highest 2 meter repeater in Eastern America. The net is called the 6600 net, referring to the elevation of Mt. Mitchell.