How to install GNU/Linux on the Panasonic Toughbook (FZ-40 / FZ-40CCAABKM) with almost(!) full hardware support (digital microphone, GPS, SIM card install documented but untested, touch screen, touchpad, webcam confirmed unsupported as of 2023/03)

Fredrick Brennan
8 min readMar 9, 2023

Specifications:
Win10 Pro (11 DG), Intel Core i7-1185G7 (up to 4.8GHz), vPro, 14.0" FHD Gloved Multi Touch, 16GB, 512GB OPAL SSD, Intel Wi-Fi 6, Bluetooth, 4G EM7690, Quad Pass (BIOS Selectable), Mic and Infrared 5MP Webcam, Standard Battery, TPM 2.0, Emissive Backlit Keyboard, Flat

Note: This guide assumes familiarity with GNU/Linux and will not repeat everything in (for example) the Arch Installation Guide or your distro vendor’s guide.

Yes my hostname is actually デブ狸 (debutanuki). Both my system76 machines I named mapache, but after I saw how heavy this machine was decided to retire that hostname for now lol
root@debutanuki~# lsusb
Bus 004 Device 002: ID 0424:5744 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 056a:52a5 Wacom Co., Ltd Multitouch sensor
Bus 002 Device 004: ID 1546:01a8 U-Blox AG [u-blox 8]
Bus 002 Device 002: ID 0424:2744 Microchip Technology, Inc. (formerly SMSC) Hub
Bus 002 Device 005: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 002 Device 006: ID 152e:2571 LG (HLDS) GP08NU6W DVD-RW
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@debutanuki~# lspci
00:00.0 Host bridge: Intel Corporation 11th Gen Core Processor Host Bridge/DRAM Registers (rev 01)
00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01)
00:04.0 Signal processing controller: Intel Corporation TigerLake-LP Dynamic Tuning Processor Participant (rev 01)
00:05.0 Multimedia controller: Intel Corporation Device 9a19 (rev 01)
00:06.0 PCI bridge: Intel Corporation 11th Gen Core Processor PCIe Controller (rev 01)
00:07.0 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0 (rev 01)
00:07.1 PCI bridge: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1 (rev 01)
00:08.0 System peripheral: Intel Corporation GNA Scoring Accelerator module (rev 01)
00:0a.0 Signal processing controller: Intel Corporation Tigerlake Telemetry Aggregator Driver (rev 01)
00:0d.0 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01)
00:0d.2 USB controller: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 (rev 01)
00:12.0 Serial controller: Intel Corporation Tiger Lake-LP Integrated Sensor Hub (rev 20)
00:14.0 USB controller: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20)
00:14.2 RAM memory: Intel Corporation Tiger Lake-LP Shared SRAM (rev 20)
00:14.3 Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20)
00:15.0 Serial bus controller: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #0 (rev 20)
00:15.1 Serial bus controller: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #1 (rev 20)
00:15.3 Serial bus controller: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #3 (rev 20)
00:16.0 Communication controller: Intel Corporation Tiger Lake-LP Management Engine Interface (rev 20)
00:16.3 Serial controller: Intel Corporation Tiger Lake-LP Active Management Technology - SOL (rev 20)
00:17.0 SATA controller: Intel Corporation Tiger Lake-LP SATA Controller (rev 20)
00:1c.0 PCI bridge: Intel Corporation Device a0ba (rev 20)
00:1d.0 PCI bridge: Intel Corporation Device a0b2 (rev 20)
00:1f.0 ISA bridge: Intel Corporation Tiger Lake-LP LPC Controller (rev 20)
00:1f.3 Multimedia audio controller: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller (rev 20)
00:1f.4 SMBus: Intel Corporation Tiger Lake-LP SMBus Controller (rev 20)
00:1f.5 Serial bus controller: Intel Corporation Tiger Lake-LP SPI Controller (rev 20)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (13) I219-LM (rev 20)
01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 980
58:00.0 Unassigned class [ff00]: Qualcomm Technologies, Inc Device 0306
59:00.0 SD Host controller: O2 Micro, Inc. SD/MMC Card Reader Controller (rev 01)

The Panasonic Toughbook line of computers is a line of rugged computers. Intended for government and corporate use, Panasonic’s official support is heavily biased on that basis towards users of Microsoft Windows®. However, as I reject proprietary software, I had to replace its OS. This was sufficiently non-trivial that I wrote this to perhaps help others. It is likely to work on other Panasonic Toughbooks. The model I have is the one with the most onboard options but I don’t (yet, will update if this changes) have any of the expansion packs so I will just talk about onboard options.

A note on booting

Booting the Toughbook FZ-40 into GNU/Linux is doable via the preinstalled OS, MS Windows. If your version comes with Windows 10, as mine did, it’ll prompt you to update. This is a waste of your time so I recommend ignoring it.

But it will not boot from the SD Card. I confirmed this every way I could think of to do so and spent many hours trying. Feel free to prove otherwise, I believe it’s because the SD Card is not part of the USB controller so it’s not considered an SD Card.

The BIOS escape key is F2. Press it repeatedly before the word Panasonic appears in white and while it’s on screen. The default supervisor password is admin.

Personally, I booted from a USB Blu-Ray player after burning an ISO in Windows with the default ISO burner.

Setting up audio

First off, there’s a lot of bad advice about this online, so if you’re here after trying other things to get the audio working in the 11th Generation Intel (Tiger Lake) series:

  • do not add snd_hda_intel.dmic_detect=0 to your kernel parameters! This causes the microphone to be unrecognizable. The Tiger Lake’s mic is a digital microphone input, and this causes an older analog driver to be loaded instead.
  • do not try to force drivers to get loaded.

Instead, look for lines like this in your dmesg or your journalctl:

Mar 08 04:48:19 debutanuki kernel: snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
Mar 08 04:48:19 debutanuki kernel: snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[...]
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: enabling device (0000 -> 0002)
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: use msi interrupt mode
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: hda codecs found, mask 5
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: DMICs detected in NHLT tables: 4
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: Direct firmware load for intel/sof/sof-tgl.ri failed with error -2
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: error: sof firmware file is missing, you might need to
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: download it from https://github.com/thesofproject/sof-bin/
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: error: failed to load DSP firmware -2
Mar 08 04:48:19 debutanuki kernel: sof-audio-pci-intel-tgl 0000:00:1f.3: error: sof_probe_work failed err: -2

These confirm that you don’t have the SOF firmware. These files come from Intel and are meant to interoperate with the Sound Open Firmware (SOF) project. Go to <https://github.com/thesofproject/sof-bin/releases> and download them from there, or find them in your repositories; on Arch it’s sof-firmware.

Then it will work after loading/restarting!

00:1f.3 Multimedia audio controller: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller (rev 20)
Subsystem: Matsushita Electric Industrial Co., Ltd. Device 8366
Flags: bus master, fast devsel, latency 32, IRQ 179, IOMMU group 18
Memory at 6040198000 (64-bit, non-prefetchable) [size=16K]
Memory at 6040000000 (64-bit, non-prefetchable) [size=1M]
Capabilities: [50] Power Management version 3
Capabilities: [80] Vendor Specific Information: Len=14 <?>
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Kernel driver in use: sof-audio-pci-intel-tgl
Kernel modules: snd_hda_intel, snd_sof_pci_intel_tgl

Before this I only had the dreaded Dummy Output.

GPS support

xgps can be used to show you nearby GPS satellites! If you dox me based on their positions alone, impressive!

To use the extremely cool built-in GPS, you need gpsd. See <https://gpsd.gitlab.io/gpsd/>.

Your repository may have a package, on Arch it’s just gpsd.

You may have to tell it to start watching the sky:

echo '?WATCH={"enable":true,"json":true};' | nc localhost 2947

Oh yeah, and also this software was written by the famous hacker guru Eric S. Raymond. Neat!

Mobile broadband modem (Sierra Wireless EM9190 5G)

I haven’t tested this yet as I have only one SIM for now but they provide drivers. The signup is easy. They are proprietary, meh, lame.

They may not be needed though. Try to install first modemmanager. I see:

Mar 08 04:48:18 debutanuki kernel: mhi-pci-generic 0000:58:00.0: MHI PCI device found: sierra-em919x
Mar 08 04:48:18 debutanuki kernel: mhi-pci-generic 0000:58:00.0: BAR 0: assigned [mem 0x7cc01000-0x7cc01fff 64bit]
Mar 08 04:48:18 debutanuki kernel: mhi-pci-generic 0000:58:00.0: enabling device (0000 -> 0002)

And when I run modem-manager-gui:

Perhaps it can run in a legacy mode? I’ll try to get around to getting another SIM soon.

Touchscreen

It has a Wacom touchscreen!

I didn’t even know until touched once on accident lol apparently a stylus could be bought too.

It seems to work fine with no special steps and I can configure touch or stylus in the settings.

Webcam

Trying to get this to work was quite the adventure. Details on my Twitter, but the cameras in this laptop will not work without significant fiddling, and might never work at all without Panasonic writing a driver.

The Panasonic FZ-40 has two webcams:

  • Omnivision OV7251 — a 5MP front-facing camera module.
  • Omnivision OV5675 — a 1.5MP front-facing infrared camera module.

The infrared camera is intended for use with Windows Hello. But as we mean to say Windows Goodbye, that doesn’t help us.

ov7251                 36864  0
ov5675 24576 0
v4l2_fwnode 36864 2 ov7251,ov5675
v4l2_async 32768 3 v4l2_fwnode,ov7251,ov5675
videodev 368640 5 v4l2_async,ov7251,ov5675,videobuf2_v4l2,uvcvideo
mc 94208 7 v4l2_async,videodev,ov7251,ov5675,videobuf2_v4l2,uvcvideo,videobuf2_common

These are intended for embedded devices and often used on the Raspberry Pi. They require an unsupported Intel module: the “Core i9/i7/i5/Xeon Imaging Signal Processor”, a multimedia device at PCI address 8086:9a19:10f7:8338.

This thread may help despite being about a Dell: https://bbs.archlinux.org/viewtopic.php?id=277462.

But I have no real interest in showing my face online lol, so now that I’ve documented it’s broken, am moving on. Feel free to let me know when it works, should such day arrive. :-)

--

--