Panasonic CF-19 Toughbook | Touch Panel Calibration

panasonic-cf-19-toughbook

I don’t have loads of experience with using a touch screen interfaces on Linux but every setup to date has not required any fiddling around in any of the configuration files for proper operation. Thankfully, the folks at Panasonic made the CF-19 with some one-off technology to offer me that experience of understanding how to tweak and configure the touch panel interface.

The Problem

Everything about this machine configured perfectly from the openSUSE installer. Not a single component required extra prodding to use. Even the touch panel was recognized and somewhat usable, however the further away from the center of the screen you would touch, the further off the pointer was from where you touched.

Calibration Attempt One

Doing some searching on the webs, I came upon this tool called xinput_calibrator that creates a set of rules in xorg.conf.d folder (/etc/X11/xorg.conf.d/). It was a such a straight forward approach that I was sure it would work. Running it displays a screen with 4 cross-hair points of which you use the stylus to touch each of them. When it completes, you have a nice little configuration file to drop into xorg.conf.d. Unfortunately, it didn’t work at all.

Calibration Attempt Two

This method was not as easily understood or accomplished and brought with it a good share of trial and error.

First, I needed to find the input name of the touch panel. This was accomplished in my favorite terminal, Konsole:

> xinput list

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Fujitsu Component USB Touch Panel id=9 [slave pointer (2)]
⎜ ↳ ImPS/2 Generic Wheel Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ Panasonic Laptop Support id=12 [slave keyboard (3)]

Now that I identified that the touch panel was identified, I needed to find further information about the touch panel itself

> xinput list-props “Fujitsu Component USB Touch Panel”

Device ‘Fujitsu Component USB Touch Panel’:
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Natural Scrolling Enabled (280): 0
libinput Natural Scrolling Enabled Default (281): 0
libinput Calibration Matrix (282): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (283): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Left Handed Enabled (284): 0
libinput Left Handed Enabled Default (285): 0
libinput Middle Emulation Enabled (286): 0
libinput Middle Emulation Enabled Default (287): 0
libinput Send Events Modes Available (263): 1, 0
libinput Send Events Mode Enabled (264): 0, 0
libinput Send Events Mode Enabled Default (265): 0, 0
Device Node (266): “/dev/input/event6”
Device Product ID (267): 1072, 1282
libinput Drag Lock Buttons (288): <no items>
libinput Horizontal Scroll Enabled (289): 1

I had to modify the line containing the Coordinate Transformation Matrix:

Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

Some of those comma separated values corresponded to specific properties of the panel matrix. What I learned about those nine numbers that seem to matter:

Touch_area_width, 0, touch_x_offset, 0, touch_area_height, touch_y_offset, 0, 0, 1

I used some trial and error to get this to line up correctly. The best way I knew how to accomplish it was to concentrate on one axis at a time. First adjust the offset and then the width or height.

This is what I ended up with:

1.115, 0, -0.073, 0, 1.14, -0.04, 0, 0, 1

Using nano, I created a little script and called it fujitsu_touch_panel.sh

#!/bin/sh

# Coordinate touch panel to screen

xinput set-prop “Fujitsu Component USB Touch Panel” –type=float “Coordinate Transformation Matrix” 1.115 0 -0.073 0 1.14 -0.04 0 0 1

Saved it and made it executable:

chmod +x ~/bin/fujitsu_touch_panel.sh

Then I moved it to the root directory in a location that seems to make sense… to me:

sudo cp ~/bin/fujitsu_touch_panel.sh /usr/local/bin

I tried several things to get this script to start as soon as the login screen manager, SDDM, started but that was without success. I was advised to try this location: /usr/share/sddm/scripts/. I tired several things, all didn’t work. Perhaps it just may work for someone else and if they are successful, I would be more than happy to edit this post with a better way. Feel free to comment below or contact me.

What I ended up doing was to add a script on startup of KDE Plasma.

System Settings > Startup and Shutdown > Autostart

Select Add Script… and entered the location of the script:

/usr/local/bin/fujitsu_touch_panel.sh

Screenshot_20180422_093443Next, I needed an onscreen keyboard to use. Not that I am a fan of those, as I think they are all terrible, I needed one just to be functional.

sudo zypper in kvkbd

I had to change the color scheme to Dark, because the default was not to my liking, nor was it usable.

Screenshot_20180422_093912.png

It is kind of fun putting this computer into tablet mode and poking around on it with the stylus and also makes me think about how nice KDE Plasma works with a touch interface. It certainly would have been much more fun to play with this if it were a multi-touch interface instead but still, fun and very usable. I certainly prefer a real keyboard but I see the value of this setup.

Final Thoughts

This is a fine little machine that is great for taking to less hospitable (to electronics) type of environments. The keyboard is just a bit cramped for my liking and the touchpad is a bit on the small side. The touch screen, once properly calibrated works wonderfully and even better with a stylus. I will find out this year how well they hold up in a “field” type environment and perhaps blather about that experience.

This is yet another fine case of where openSUSE just works on hardware with very little fussing about. Aside from the touch panel calibration, everything else about this machine works perfectly.

External Links

https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

https://wiki.archlinux.org/index.php/Touchscreen

https://forums.opensuse.org/showthread.php/429517-Can-t-calibrate-touchscreen

Wii U Pro Controller on openSUSE Linux

e6440-WiiU-Pro-Controller.pngI don’t do much serious gaming on Linux but I do like to play the occasional Steam or older games in an emulator. I have historically liked the PS3 controllers in Linux. There is nothing you have to do to get it to work. Plug the dongle in a USB, pop in some batteries and away you go.

The Wii U is now a deprecated gaming console, which makes me much more interested in it. I have had one for a little while but the Gamepad digitizer has been broken for some time. I originally set out to fix the game pad but the issue with some of the buttons not working along with the digitizer, it had me thinking I should just replace the whole thing so I can start using the console. On the hunt for the replacement Gamepad, I also acquired a couple of these Wii U Pro Controllers. I wanted these in order to play this “New Super Mario Wii U” game and compare it against my favorite of the franchise. I think putting “New” in the title is a bit silly because it isn’t new now.

Upon holding the Wii U Pro Controller in my hand, it felts so good… almost perfect for my somewhat long and gangly fingers. I wanted to try out these Wii U pro Controllers on Linux, play some Steam games but fully expecting the process to be a headache; you know, because Nintendo. I made the assumption that I would have to install xwiimote to get it to work but upon reading and some further understanding of all the work some incredibly smart people have done, I only need that for the Wii Remotes. The machine I tested this on is running openSUSE Tumblweed Kernel 4.16.0 and it is my understanding that the wiimote kernel drivers have been in place since 3.1.

Setting up the Wii U Pro Controller

Screenshot_20180402_122527Nintendo chose to use Bluetooth technology in the Wii and Wii U so I started off by Pressed the Sync button on the controller and it showed when selecting Add Device on the KDE Plasma Bluetooth configuration tool. It connected, the lights stopped flashing on the controller with one solid light glowing. I checked the capabilities of the controller, to see that it was usable, in the System Settings > Input Devices > Joystick. It was just as I would expect from any other controller I own.

I opened terminal to see the kernel messages concerning this device by running: dmesg

[86905.904160] wiimote 0005:057E:0330.000B: hidraw1: BLUETOOTH HID v0.01 Gamepad [Nintendo RVL-CNT-01-UC] on 80:00:0b:82:a8:1f
[86905.904169] wiimote 0005:057E:0330.000B: New device registered
[86905.981821] wiimote 0005:057E:0330.000B: detected device: Nintendo Wii U Pro Controller
[86906.011799] wiimote 0005:057E:0330.000B: detected extension: Nintendo Wii U Pro Controller
[86906.011889] input: Nintendo Wii Remote Pro Controller as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/bluetooth/hci0/hci0:34/0005:057E:0330.000B/input/input33

Now I was excited.

I opened up Steam and started the game, “River City Ransom: Underground”, completely bypassing any of the configure input device to see what would happen. To my shock and blissful amazement, everything worked as expected. I hopped out of the game to see the controller settings and it was recognized it as a Wii U controller.

Detected Controller Wii U

I also checked out this “Desktop Configuration” setup with Steam. As long as Steam is running, I can use this Wii U controller to as an input device for controlling my Linux Desktop. I like this particular interface because I can define what each button does. This is a feature that KDE Plasma doesn’t seem to have built in and I don’t want to create an Xorg configuration for this either.

Desktop Configuration

This truly is a lot of fun to play with. Sure, it is probably just a novelty for now but I am thinking that I might want to make this a controller for my living room media machine along with the wireless keyboard/touchpad device as that is almost overkill when you just want to browse and watch some Netflix.

Final Thoughts

I really was expecting to do so more to do to get this working. On one hand I am very pleased on how easy it was to get working. On the other had I am a bit disappointed as I expected a bit of a project out of this and I was going to make the whole process “easy” and simple in a short write up. Instead, I get to tell you that the Wii U Pro Controller works great in Linux and is a great choice for modern (what little I do) and retro gaming. Best of all, no USB dongles to worry about losing!

External Links

XWiimote open-source Linux device driver for Nintendo Wii / Wii U Remotes

Wii U Pro Controller

Spectre and Meltdown Vulnerability Status Using the Terminal

I don’t hear much about the current status of Spectre and Meltdown lately and I am not going to pretend that I am an expert on these topics. I will say, it has been marketed very well. Out of curiosity, periodically check the status of the vulnerabilities on my machines. I am running openSUSE Tumbleweed snapshot 20180410 and at the time of writing, with Linux Kernel 4.16.0-1-default.

Since I have trouble remembering the exact command, I tend to just scroll through my bash history to find it so to make my life easier, here it is:

grep . /sys/devices/system/cpu/vulnerabilities/*

This is what my machine says:

/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full generic retpoline, IBPB, IBRS_FW

If you run this on your Linux machine and don’t get the three lines of Meltdown, spectre_v1 and spectre_v2, your kernel is hugely out of date and is in desperate need of updating.

The reality is, there isn’t likely going to be fully secured fix for Spectre and Meltdown. The output from the patch status uses the word mitigation on purpose. It got me thinking, what does mitigation really mean?

According to Dictionary.com:

the act of mitigating, or lessening the force or intensity of something unpleasant, as wrath, pain, grief, or extreme circumstances.

Lessening the the intensity of something unpleasant… I once thought of computers as something you could truly secure but the reality is, the only secure piece of equipment is one you can’t access at all. Anything that can execute code is going to be vulnerable to some degree and weather it is Linux, Windows or Mac OS they all have their vulnerabilities, Linux just happens to have fewer.

I appreciate all the work of the Linux kernel team in responding to the recently discovered hardware flaws of these modern CPUs. Whether they are Intel, AMD, or ARM (and others?), more permanent hardware fixes won’t be in place for some time but in any complex system, there will always be bugs. The most responsible thing to do, as a user, is to keep your systems updated, know what you are installing, don’t click on sketchy things and perform offline backups of your data.

Further Reading

https://spectreattack.com/

Giving Fedora Another Run

Fedora_logo.svgI hear a lot of good things about Fedora and sometimes I hear some negative things about it but I have not used it myself since some time around 2010. I wanted to make my own evaluation and I thought the time was right to kick the tires again. I am a die-hard openSUSE user, fan and member. I have happily made it my daily driver operating system. The community is great, the documentation is great, and it meets all my needs. I am firmly and happily planted in the openSUSE camp. There is no reason for me to change my distro of choice. That, however, doesn’t keep me from trying out other distributions and evaluating them against what I know and like. My other reason for doing this is that I often get questions for help with distributions other than openSUSE. I generally just fire off other web sites to help guide but I have decided to do one better and develop more practical experience of my own.

First Impressions

Fedora GrubRight out of the gate, I must say, I like Fedora. It’s easy to install, I had no hiccups or weirdness with it at all. What really impressed me most about Fedora was the upgrade process from 26 to 27. It was such a clean and very well polished experience. The Software Center let me know there was an upgrade available at the click of a “Reboot and Install” button. I initiated the process and a reboot later (well, a few reboots), it was all done.

At the time of writing, I am using Fedora 27 running Kernel 4.15.14; more current than what I am running on openSUSE Tumbleweed, which surprised me a bit. Gnome is not my preferred desktop environment but I wanted to give Fedora + Gnome a fair shake.

Multimedia Codec Installation

Since I keep a collection of local media, it is a requirement to have VLC along with the necessary codes to consume that media.  I did a bit of searching and found a page on Ask Fedora that had the instructions for the multimedia codecs. They are pretty similar to what I use for openSUSE so this was quite familiar.

Here is where I pulled down the instructions and they worked successfully, even though they haven’t been updated since Fedora 24. It provides some options for conducting the process, I will only share here what I did.

Added Repositories:

Free

dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Non-free

dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

The Packages

Base recommended multimedia codec packages:

dnf install gstreamer1-{ffmpeg,libav,plugins-{good,ugly,bad{,-free,-nonfree}}} --setopt=strict=0

If you prefer xine over Gstreamer:

dnf install xine-lib* k3b-extras-freeworld

For using to internet radio streams, you need a few more packages:

dnf install gstreamer1-{plugin-crystalhd,ffmpeg,plugins-{good,ugly,bad{,-free,-nonfree,-freeworld,-extras}{,-extras}}} libmpg123 lame-libs --setopt=strict=0

Overall the process was easy enough for a novice Linux user to set up, so long as they aren’t afraid of working in the terminal. I didn’t see instructions on installing the packages using a graphical method but I didn’t dig real hard.

What I Like

Right from the login screen, everything feels very smooth and polished. The color scheme is pleasant enough but I would prefer a dark theme by default or activating one that doesn’t require an “extension”.

Fedora SoftwareI was singularly impressed with the software center prompting for and executing the upgrade process from 26 to 27. The Software Center, kept me informed enough of what was going on, rebooted and installed the software. Everything came back and I was now, auto-magically, on Fedora 27.

The whole operating system seems very well thought out. It is as though it was curated by technically skilled artists and were just as concerned about function as they were about aesthetics. This is more of a Gnome thing, but it feels very inviting with the large and colorful buttons and banner pictures, yet clean minimalism to accomplish your tasks.

DNF is a great command line tool for installing and removing software and repositories. It works much like zypper, in fact, the syntax was largely the same for basic installation and removal. I do love zypper but I would also be happy using DNF.

What I Don’t Like

I couldn’t customize the desktop until I installed “Gnome Tweaks”. It was a little frustrating that it wasn’t included by default and the only reason I knew to install that was hearing others talk about it on various podcasts.

The software center didn’t locate the packages I was attempting to install but that was not a problem as I was perfectly comfortable using DNF in the terminal to find the packages I wanted.

Even though the upgrade process was smooth, after the upgrade was complete, there was another round of updates that required a Reboot & Install which seemed odd to me as my experience on openSUSE Leap and Tumbleweed have been that there are updates, then the restart and I’m done. It is not a problem, perhaps at most a small annoyance. Realistically, I could have just ignored the 23 additional updates.

Final Thoughts

Fedora with Gnome, both are a good as you can get Gnome experience. Under the hood, I like what Fedora has to offer. It is clear that the underpinnings of Fedora are well tested, which really makes the final product for the user, the desktop and applications, a great, solid and smooth experience.

Would I recommend Fedora? Absolutely! Maybe not to the typical brand new user but anyone that is not afraid of the terminal. I only just started to become familiar with Fedora and I can say it has been an incredibly positive experience.

External Links

Fedora Linux

Ask Fedora Multimedia Codec Installation

Playing in the terminal | dmidecode

utilities-terminalLinux makes computers fun, the more you dig into Linux, the more fun it becomes. I recently became aware of the command dmidecode and what a fun and useful tool it is. dmeidecode is the DMI table decoder that will tell you all kinds of things you never knew you wanted to know about your computer. I initially learned of it on the Ask Noah Show and just ran it in terminal to see what what it would kick back on my main machine:

sudo dmidecode -s system-product-name

of which was return in a very simple and easy to understand output.

Latitude E6440

Then I started to think, what else can this command tell me about my machine.

sudo dmidecode -s chassis --type

Reported that I was running a:

Laptop

The BIOS information was rather interesting. Just a part of the output of running this:

sudo dmidecode --type 0

Contained a lot of information but this I most enjoyed was seeing:

5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)

It was interesting to see that although I don’t have one ready to test out on this machine, I can run a 5.25″ floppy. I really don’t know, at this time, how exactly I would go about interfacing a 5.25″ drive but none the less, very cool to see.

If you have some putzing around time, run:

man dmidecode

and play around with some of the functions. You just might find it interesting.

External Links

Ask Noah Show Episode 52