Tag: Chipsets and components

Trusted Platform Module now available as an add-on for Librem laptops

Over the past few months, we have been busy with a plethora of great projects being set afoot. We have been incrementally building a laptop inventory to ship from, we have been continuing the coreboot enablement work on our laptops, neutralizing—and then disabling—the Intel Management Engine, and launching our much awaited Librem phone campaign, which ended in a very motivating success—involving many great organizations part of the Free Software community, such as Matrix, KDE e.v., the GNOME Foundation, Nextcloud, and Monero.

It really has been a whirlwind of events, and this has been happening in parallel to us continuing our existing R&D and operations work, such as preparing a new batch of laptops—namely the much anticipated Librem 13 with i7 processor.

One particular security R&D project dear to our hearts has been the beginning of our collaboration with “Heads” developer Trammell Hudson, a project that has been quietly going on behind the scenes for the past few months. We are very pleased to announce today that we are making a positive step to make this effort within reach of early adopters, with the availability of a Trusted Platform Module (TPM) as an optional component for currently pending and near-future laptop orders. Read more

The Librem 5 Development Roadmap and Progress Towards i.MX 8

The Librem 5 crowdfunding campaign is still cranking along nicely, while it is going on we wanted to provide a progress report on the hardware selection as well as the advancements with our existing development boards.

TL;DR:

  • The base hardware with i.MX 6 is demonstrably working.
  • i.MX 8M, Etnaviv, full HD, are the likely hardware combination candidates for the Librem 5 phone.

Development Hardware Proving Positive

Showing photos of low-level progress is always a challenge, however showing Wayland and applications running on development hardware by definition means that the lower level parts are working! Booting from microSD into a Debian GNU/Linux unstable with most of the UI installed…

Purism Librem 5 phone (early development boards) for testing CPU/GPU and GNU/Linux
Purism Librem 5 (early development boards) booting the Linux kernel, Wayland, and a terminal in early August 2017.
Purism Librem 5 (early development boards) booting Debian GNU/Linux unstable, Wayland, and GNOME Settings in September 2017
Purism Librem 5 (early development boards) screenshot of a photo rendered

What led us to choose i.MX 6/i.MX 8

We have tested nearly every combination of CPU (and GPU, see further below), Purism’s goals of creating hardware that is ethical, runs free software, can separate baseband from main CPU, and the ability to run GNU/Linux (not Android), quickly narrowed our scope to i.MX 6 as one of the only viable options.

We have been testing and working with i.MX 6 and are pleased to report healthy progress with that hardware, as you can see from the photos, we have the Linux kernel booting, Wayland running, and in these photos GNOME/GTK and even Gnome Settings showing.

Purism Librem 5 (early development boards) running Debian GNU/Linux unstable, wayland, and GNOME Settings screenshot

Heading towards i.MX 8

We have been making some progress that makes us confident to say we will likely be able to use i.MX 8 for the Librem 5 phone hardware, primarily because:

  1. We will be able to evaluate a i.MX 8M pre-production board November 2017
  2. Our extended community can evaluate a handful of i.MX 8M sample chips in November 2017
  3. More evaluation boards should be available before year-end 2017
  4. In Q1 of 2018 we can get i.MX 8M into production. This is well ahead of our required hardware selection date of April 2018, so we will very likely be using the i.MX 8M in the Librem 5.
i.MX 8M (early evaluation boards)

State of the GPUs… or “Why we chose i.MX 6/8 + Vivante”

GPU drivers have been a big issue for a long time in the free software world. Manufacturers would typically not release any specification or documentation but only binary-only drivers. For PC hardware this problem has somewhat been resolved, which is why Purism uses Intel GPUs on our Librem products, since Intel has free drivers merged in mainline Linux kernel. But for ARM SOCs, the situation is not ideal.

  • MALI: One of the biggest players in the ARM field is MALI. The MALI core was originally developed by Falanx Microsystems until ARM bought their patents and copyrights and is now licensing the MALI core for ARM designs. ARM is not releasing any specs about the MALI GPU cores and does not provide any free software drivers for them. (The MALI400 is e.g. also used in the Allwinner A64 chip which again is used on Pine64 and in the Pinebook). There is an effort to develop a free driver by reverse engineering existing code, which is called LIMA, but its functionality and support is still limited.
  • Adreno: another big one is the Adreno GPU core, found in many Qualcomm Snapdragon SOCs. For this one also, no documentation exists although a reverse engineering project produced a pretty well working driver, called freedreno, which is also supported by current Mesa versions.
  • PowerVR: the PowerVR GPU cores are found mostly in embedded PowerPCs and Texas Instruments “OMAP” CPUs. As of today, we are not aware of any free development for these, only some binary-only drivers are available. There is an effort started by the Free Software Foundation but it seems that the project has stalled for some time now.
  • Tegra: the first generation nVIDIA “Tegra” SOCs has Linux kernel mainline support since 2012. The latest Tegra SOCs use the same GPU building blocks as the desktop PC graphics cards and can be used with the Nouveau GPU driver.
  • i.MX 6 Vivante: since Linux kernel 4.8, a new set of DRM/GPU drivers has been incorporated into the mainline Linux kernel, the so-called Etnaviv. Etnaviv support is also included in Mesa, starting with Mesa 17. We have successfully been operating a prototype for our phone using a mainline Linux kernel 4.12.4 with Etnaviv support. From microSD we booted into a Debian GNU/Linux unstable with most of the UI stuff installed. It works! We can safely say that upstream OpenGL hardware GPU support for i.MX 6 has landed in major Linux distributions, which is great news since hardware GUI acceleration is badly needed for any type of modern mobile GUI.

With the Librem 5, we are very excited to be advancing the mobile phone space to be ethical, respect digital rights, run GNU/Linux, be secure, and create a future that we are proud to be part of. We will be posting regular development updates as we progress with the hardware, software, and partners.

How Purism Avoids Critical Intel Security Exploit

Intel dropped a fairly large bombshell on the world May 1st, 2017, when they published a security advisory that explains how nearly every single Intel chip since 2008 is now vulnerable to a remote exploit through AMT, even when powered off.

Purism, which uses Intel chips, happens to be immune to this very nasty threat. Purism happens to also be the only manufacturer where all products are designed specifically to be immune to this very substantial threat. Purism is able to accomplish this thanks to its strict belief in digital rights for users and adherence to its social purpose; it is this philosophy that brings Purism to systematically remove exploitable firmware from the computers it makes, and users are all the better for it.

We already published a lengthy article on the potential of this type of threat, which you can find at How Purism Avoids Intel AMT, but in case you wanted the shorter version:

  1. We choose Intel CPUs that do not have the hardware enabled to be exploitable (no vPro/AMT)
  2. We avoid Intel networking, to remove this exact threat (no Intel networking, no remote exploit from exploitable firmware)
  3. We neutralize the exploitable firmware

The larger message rings true; if you can’t control the computer, the computer controls you. This turn of events highlights that fact clearly; this exploitable Intel firmware is a binary at the lowest level of the CPU, outside the view of the user, allowing for anybody to use it to gain full control of the computer, even when the device is powered off. This represents the worst of all possible security vulnerabilities, and we are very proud to have a philosophy that makes our products the only high-end current hardware offering that can safely avoid this Intel security exploit.

Share your input on the upcoming Librem Phone’s features

We’re starting to zero-in on the hardware specifications that will define our first Librem Phone model, and we’d like your help to evaluate a few of the outstanding questions that come down to personal preferences.

Therefore, we are making an advisory survey for you to participate in. In the process, we want to:

  • hear from you what hardware and specifications you’d like to see in a phone;
  • both educate and learn from users about hardware and software choices that align with our beliefs;
  • determine how much interest there is in us producing a Librem Phone
  • collaborate and join forces with developers who will have a positive impact on the future of computing.

We know your time is precious, so we’ve made sure that filling this survey will take you merely a minute or so. Thanks!

Librem Phone Survey

Librem Phone Survey

2015-08-21 Librem 13: Weekly BIOS Progress Update

This post covers the Librem 13 engineering considerations around writing to the SPI flash chip, and how that affects coreboot development. This builds on last week’s notes on the low level I/O for debugging coreboot builds. As always, email questions or comments to: feedback@puri.sm.

The BIOS flash on the Librem 13 is an 8 MiB chip in a SOP-8 package. The EC firmware is located on a separate 64 KiB chip. This link can be used to locate the chips on your mainboard: the BIOS flash is halfway down, near the CPU heatpipe. The EC flash is at the bottom just below the DDR3L module.

Even without any patches specifically for the Librem 13, flashrom can flawlessly read its BIOS flash because it supports the PCH. Unless you write outside the BIOS region, you will not encounter any problems using flashrom to update your BIOS.

Please don’t update the Intel Firmware Descriptor or ME region just yet–all the IFD bits are marked read/write and flashrom is happy to execute a write to that region. The issue arises because the ME writes asynchronously to the ME region. A collision of flashrom and ME writes will corrupt the ME region and may brick the laptop. Purism intends to provide an unlocked ME that respects your freedom, so look for an update on the Purism blog.

In-System Programming The BIOS Flash

The BIOS can be written and verified using a SOP-8 clip after closing the two sides of jumper J1 to assert the PCH RSMRST# pin. Warning: reflashing the BIOS risks bricking the laptop until in-system programming and/or soldering a new BIOS chip restores the BIOS to a good state.

EC Flash

The KB3930 datasheet, section 3.1 “Hardware Trap,” gives the method for programming the EC flash:

  1. Disconnect the battery and the A/C power so that the EC is fully powered down.
  2. Pull GPIO23/TP_ISP (pin 42) to GND. Note the internal 40K-ohm pull-up resistor.
  3. Connect the A/C power supply to the board. The EC is now powered up.
  4. TP_ISP sets CS#, SPI_CLK, MISO, and MOSI lines “High-Z”.
  5. Connect a SOP-8 clip and flash programmer and flash the EC firmware.

It should be noted fine-pitch soldering is required to connect to pin 42 on the EC. The KB3930 also supports firmware updates via software. We will be developing a clean room Free Software EC firmware that has all the same functionality as the existing EC firmware.

Conclusions

This post covers the steps for coreboot development and recovery. Fortunately, the EC firmware is not shared with the BIOS or ME blob, which makes flashrom’s job easier.

BIOS development is hard. One of the major challenges facing BIOS developers is a lack of accurate, comprehensive documentation for all the hardware coreboot interacts with. The “elephant in the room,” for an Intel-based laptop, is the Management Engine.

[Ed. Note: this was reposted from blogs.coreboot.org with permission.]

Purism Librem 15 rev2 Prototype Certification Results

Purism received the (third) prototype of the Librem 15 rev2 on August 13th 2015, here is the prototype certification play-by-play…

First a photo of motherboard inside the Purism Librem 15 rev2 prototype’s case:
Purism Librem 15 rev2 open 1920x997

We first load PureOS running a kernel from Linux-libre which ensures we are not running any binary blobs.

Here is the summary:

Item TestedWorks with free softwareKernel driverKernel module
Host bridgeYesn/an/a
PCI bridgeYespcieportshpchp
SATA conrollerYesahciahci
Communication controllerYesmei_memei-me
ISA BridgeYeslpc_ichlpc_ich
VideoYesintelintel
USBYesxhci_hcd,ehci-pcin/a
WirelessYesath9kath9k
AudioYessnd_hda_intelsnd-hda-intel
HeadphoneYessnd_hda_intelsnd-hda-intel
MicrophoneYessnd_hda_intelsnd-hda-intel
WebcamYesuvcvideouvcvideo
HDMIYesfglrxfglrx
SDXCYesxhci_hcd,ehci-pcixhci_hcd,ehci-pci
SMBusYesi2c-i801i2c-i801

LSPCI and LSUSB summary

lspci

purism@purism-librem-15-rev2-001:~$ lspci
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09)
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03)
00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03)
00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #1 (rev e3)
00:1c.3 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #4 (rev e3)
00:1d.0 USB controller: Intel Corporation Wildcat Point-LP USB EHCI Controller (rev 03)
00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation Wildcat Point-LP SATA Controller [AHCI Mode] (rev 03)
00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)
02:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)

lsusb

purism@purism-librem-15-rev2-001:~$ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp. 
Bus 001 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 002 Device 007: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 003: ID 058f:3821 Alcor Micro Corp. 
Bus 002 Device 002: ID 0489:e076 Foxconn / Hon Hai 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Video

purism@purism-librem-15-rev2-001:~$ sudo lspci -v -k -s 00:02
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09) (prog-if 00 [VGA controller])
	Subsystem: Device 1991:5591
	Flags: bus master, fast devsel, latency 0, IRQ 11
	Memory at b1000000 (64-bit, non-prefetchable) [size=16M]
	Memory at c0000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 3000 [size=64]
	Expansion ROM at  [disabled]
	Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [a4] PCI Advanced Features

Screengrab of display setting showing 1920×1080 resolution
purism-librem-15-rev2-display-screenshot-20150814

USB

purism@purism-librem-15-rev2-001:~$ sudo lspci -v -s 00:14
00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03) (prog-if 30 [XHCI])
	Subsystem: Intel Corporation Device 7270
	Flags: bus master, medium devsel, latency 0, IRQ 60
	Memory at b2100000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [70] Power Management version 2
	Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
	Kernel driver in use: xhci_hcd
purism@purism-librem-15-rev2-001:~$ sudo lspci -v -s 00:1d
00:1d.0 USB controller: Intel Corporation Wildcat Point-LP USB EHCI Controller (rev 03) (prog-if 20 [EHCI])
	Subsystem: Intel Corporation Device 7270
	Flags: bus master, medium devsel, latency 0, IRQ 23
	Memory at b211a000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 3
	Capabilities: [58] Debug port: BAR=1 offset=00a0
	Capabilities: [98] PCI Advanced Features
	Kernel driver in use: ehci-pci

Upon plugging in a usb stick dmesg shows:

[ 1263.110776] usb 2-8: new high-speed USB device number 7 using xhci_hcd
[ 1263.124377] usb 2-8: New USB device found, idVendor=058f, idProduct=6366
[ 1263.124386] usb 2-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1263.124391] usb 2-8: Product: Flash Card Reader/Writer
[ 1263.124394] usb 2-8: Manufacturer: Generic
[ 1263.124398] usb 2-8: SerialNumber: 058F63666485
[ 1263.125010] usb-storage 2-8:1.0: USB Mass Storage device detected
[ 1263.126009] scsi6 : usb-storage 2-8:1.0
[ 1263.175624] keucr: module is from the staging directory, the quality is unknown, you have been warned.
[ 1263.175893] usbcore: registered new interface driver eucr
[ 1264.129591] scsi 6:0:0:0: Direct-Access     Multiple Card  Reader     1.00 PQ: 0 ANSI: 4
[ 1264.132901] sd 6:0:0:0: Attached scsi generic sg1 type 0
[ 1264.909196] sd 6:0:0:0: [sdb] 63404032 512-byte logical blocks: (32.4 GB/30.2 GiB)
[ 1264.911384] sd 6:0:0:0: [sdb] Write Protect is off
[ 1264.911398] sd 6:0:0:0: [sdb] Mode Sense: 23 00 00 00
[ 1264.913650] sd 6:0:0:0: [sdb] Write cache: disabled, read cache: disabled, doesn't support DPO or FUA
[ 1264.919882]  sdb: sdb1
[ 1264.924699] sd 6:0:0:0: [sdb] Attached SCSI removable disk

Wireless

purism@purism-librem-15-rev2-001:~$ sudo lspci -v -s 02:00
02:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
	Subsystem: Foxconn International, Inc. Device e07d
	Flags: bus master, fast devsel, latency 0, IRQ 19
	Memory at b2000000 (64-bit, non-prefetchable) [size=512K]
	Expansion ROM at b2080000 [disabled] [size=64K]
	Capabilities: [40] Power Management version 2
	Capabilities: [50] MSI: Enable- Count=1/4 Maskable+ 64bit+
	Capabilities: [70] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00
	Kernel driver in use: ath9k

Screengrab of wireless selection user interface
purism-librem-15-rev2-networking-wireless-20150814

Audio

purism@purism-librem-15-rev2-001:~$ sudo lspci -v -s 00:03
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
	Subsystem: Intel Corporation Broadwell-U Audio Controller
	Flags: bus master, fast devsel, latency 0, IRQ 64
	Memory at b2114000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Kernel driver in use: snd_hda_intel

purism@purism-librem-15-rev2-001:~$ 

purism@purism-librem-15-rev2-001:~$ sudo lspci -v -s 00:1b
00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
	Subsystem: Intel Corporation Device 7270
	Flags: bus master, fast devsel, latency 32, IRQ 63
	Memory at b2110000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 3
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Kernel driver in use: snd_hda_intel

Screengrab of audio playback from Rhythmbox
purism-librem-15-rev2-rhythmbox-screenshot-20150814

Headphone and Microphone

Screengrab of sound recorder showing headphone and microphone hardware jacked:
purism-librem-15-rev2-microphone-headphone-screenshot-20150814
(microphone from headphone jack also works)

Camera

purism-librem-15-rev2-camera-screenshot-20150814

Sytem Information

purism-librem-15-rev2-system-info-screenshot-20150814

cpuinfo

purism@purism-librem-15-rev2-001:~$ egrep "processor|vendor_id|model|MHz|^$" /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
model		: 61
model name	: Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
cpu MHz		: 900.000

processor	: 1
vendor_id	: GenuineIntel
model		: 61
model name	: Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
cpu MHz		: 500.000

processor	: 2
vendor_id	: GenuineIntel
model		: 61
model name	: Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
cpu MHz		: 500.000

processor	: 3
vendor_id	: GenuineIntel
model		: 61
model name	: Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
cpu MHz		: 700.000

glxgears

purism-librem-15-rev2-glxgears-screenshot-20150814

lspci -v (Kernel driver in use)

purism@purism-librem-15-rev2-001:~$ lspci -v | egrep "\.[0-9] |driver in use"
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09) (prog-if 00 [VGA controller])
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
	Kernel driver in use: snd_hda_intel
00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03) (prog-if 30 [XHCI])
	Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03)
	Kernel driver in use: mei_me
00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
	Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #1 (rev e3) (prog-if 00 [Normal decode])
	Kernel driver in use: pcieport
00:1c.3 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #4 (rev e3) (prog-if 00 [Normal decode])
	Kernel driver in use: pcieport
00:1d.0 USB controller: Intel Corporation Wildcat Point-LP USB EHCI Controller (rev 03) (prog-if 20 [EHCI])
	Kernel driver in use: ehci-pci
00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03)
	Kernel driver in use: lpc_ich
00:1f.2 SATA controller: Intel Corporation Wildcat Point-LP SATA Controller [AHCI Mode] (rev 03) (prog-if 01 [AHCI 1.0])
	Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)
02:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
	Kernel driver in use: ath9k

Pioneering CPU Efforts to Liberate Laptop Hardware

Purism’s Librem 15 laptop will be the first to ship with a modern Intel CPU that is not locked down to require proprietary firmware. This marks one of the largest hurdles to a laptop that runs 100 percent free software and firmware.

Purism’s Librem 15 will ship with an Intel CPU fused to run unsigned BIOS code, allowing a future where free software can replace the proprietary, digitally signed, BIOS binaries.

Commenting on this boon to user freedom, Dr. Richard M. Stallman, president of the Free Software Foundation (FSF), states,

“Getting rid of the signature checking is an important step. While it doesn’t give us free code for the firmware, it means that users will really have control of the firmware once we get free code for it.”

Based in San Francisco, Purism was founded precisely to overcome this and the remaining hurdles to reinstating user freedom, privacy, and control in computer hardware. The Librem 15 laptop is the first in Purism’s line of products and has until the end of January to reach a $250,000 funding goal that makes manufacturing the first batch possible.

Portland, Oregon-based Crowd Supply is a curated crowdfunding and e-commerce company that offers product development as a platform. It has launched more than 70 products, many with strong ties to the free and open source software and hardware communities.

Purism Librem 15 rev1 Prototype Certification Results

After long last, Purism has received the first prototype of our custom built laptop, adhering to the strictness of the Purism hardware requirements specification. Here is the certification play-by-play…

First a photo of motherboard inside the Purism Librem 15 case:
purism-mobo-in-case

Purism is certifying its first prototype motherboard for the Librem 15 laptop. Here we shall document the steps to test each chipset to meet the requirements set by the Purism philosophy, the GNU four essential freedoms, as well as the strictest of the Free Software Foundation endorsement requirements.

To do this, Purism first booted gNewSense, a FSF funded distribution. gNewSense 3 was a bit stale on some Linux kernel modules needed for the video controller, and X used the framebuffer driver, so we upgraded the kernel from Linux-libre planet repository, and picked up the free video driver. gNewSense 3 was excellent for testing the chipset requirements, but some of the packages were a bit too stale, so we chose another popular distribution from the FSF list of approved distributions.

Purism used Trisquel to certify chipsets, as well as it being later selected as the Purism default GNU/Linux distribution.

Here is the summary:

Item TestedWorks with free softwareKernel driverKernel module
Host bridgeYesn/an/a
PCI bridgeYespcieportshpchp
SATA conrollerYesahciahci
Communication controllerYesmei_memei-me
ISA BridgeYeslpc_ichlpc_ich
VideoYesi915i915
USBYesxhci_hcd,ehci-pcin/a
WirelessYesath9kath9k
EthernetYesr8169r8169
AudioYessnd_hda_intelsnd-hda-intel
HeadphoneYessnd_hda_intelsnd-hda-intel
MicrophoneYessnd_hda_intelsnd-hda-intel
WebcamYesuvcvideouvcvideo
HDMIYesfglrxfglrx
CD/DVDYescdrom,gdromcdrom,gdrom
SDXCYesxhci_hcd,ehci-pcixhci_hcd,ehci-pci
SMBusYesi2c-i801i2c-i801

LSPCI and LSUSB summary

lspci

todd@pure15:~$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 3D controller: NVIDIA Corporation Device 1341 (rev a2)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
04:00.0 Network controller: Qualcomm Atheros AR9485 Wireless Network Adapter (rev 01)

lsusb

todd@pure15:~$ lsusb
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 003 Device 002: ID 090c:37c0 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Silicon Motion Camera
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Video

todd@pure15:~$ lspci -v -s 00:02
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
Subsystem: Device 1991:558a
Flags: bus master, fast devsel, latency 0, IRQ 47
Memory at f7400000 (64-bit, non-prefetchable) [size=4M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Expansion ROM at [disabled]
Capabilities:
Kernel driver in use: i915
Kernel modules: i915
todd@pure15:~$ lspci -v -s 01:00
01:00.0 3D controller: NVIDIA Corporation Device 1341 (rev a2)
Subsystem: Device 1991:558a
Flags: fast devsel, IRQ 16
Memory at f6000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
Expansion ROM at f7000000 [disabled] [size=512K]
Capabilities:
Kernel modules: nouveau, nvidiafb

Screengrab of display setting showing 1920×1080 resolution
purism-video-resolution-screengrab

USB

todd@pure15:~$ lspci -v -s 00:14
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) (prog-if 30 [XHCI])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
Flags: bus master, medium devsel, latency 0, IRQ 44
Memory at f7a00000 (64-bit, non-prefetchable) [size=64K]
Capabilities:
Kernel driver in use: xhci_hcd
todd@pure15:~$ lspci -v -s 00:1a
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05) (prog-if 20 [EHCI])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
Flags: bus master, medium devsel, latency 0, IRQ 16
Memory at f7a1c000 (32-bit, non-prefetchable) [size=1K]
Capabilities:
Kernel driver in use: ehci-pci
todd@pure15:~$ lspci -v -s 00:1d
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05) (prog-if 20 [EHCI])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
Flags: bus master, medium devsel, latency 0, IRQ 23
Memory at f7a1b000 (32-bit, non-prefetchable) [size=1K]
Capabilities:
Kernel driver in use: ehci-pci

Upon plugging in a usb stick dmesg shows:

[16813.602225] usb 3-1: new high-speed USB device number 7 using xhci_hcd
[16813.620322] usb 3-1: New USB device found, idVendor=1307, idProduct=0165
[16813.620328] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[16813.620332] usb 3-1: Product: mini-USB2BU
[16813.620334] usb 3-1: Manufacturer: USB007
[16813.620336] usb 3-1: SerialNumber: 000000000003C3
[16813.620855] usb-storage 3-1:1.0: USB Mass Storage device detected
[16813.621120] scsi10 : usb-storage 3-1:1.0
[16814.618847] scsi 10:0:0:0: Direct-Access USB007 mini-USB2BU 0.00 PQ: 0 ANSI: 2
[16814.619169] sd 10:0:0:0: Attached scsi generic sg2 type 0
[16814.619587] sd 10:0:0:0: [sdb] 3948544 512-byte logical blocks: (2.02 GB/1.88 GiB)
[16814.620076] sd 10:0:0:0: [sdb] Write Protect is off
[16814.620081] sd 10:0:0:0: [sdb] Mode Sense: 00 00 00 00
[16814.620576] sd 10:0:0:0: [sdb] Asking for cache data failed
[16814.620579] sd 10:0:0:0: [sdb] Assuming drive cache: write through
[16814.623247] sd 10:0:0:0: [sdb] Asking for cache data failed
[16814.623261] sd 10:0:0:0: [sdb] Assuming drive cache: write through
[16814.751399] sdb: sdb1 sdb2
[16814.978436] sd 10:0:0:0: [sdb] Asking for cache data failed
[16814.978441] sd 10:0:0:0: [sdb] Assuming drive cache: write through
[16814.978445] sd 10:0:0:0: [sdb] Attached SCSI removable disk
[16815.224868] ISO 9660 Extensions: Microsoft Joliet Level 3
[16815.225388] ISO 9660 Extensions: RRIP_1991A

Screengrab of USB stick contents
purism-usb-stick-screengrab

Wireless

todd@pure15:~$ lspci -v -s 04:00
04:00.0 Network controller: Qualcomm Atheros AR9485 Wireless Network Adapter (rev 01)
Subsystem: AzureWave Device 2c97
Flags: bus master, fast devsel, latency 0, IRQ 19
Memory at f7800000 (64-bit, non-prefetchable) [size=512K]
Expansion ROM at f7880000 [disabled] [size=64K]
Capabilities:
Kernel driver in use: ath9k
Kernel modules: ath9k

Screengrab of wireless selection user interface
purism-wireless-selection-screengrab

Ethernet

todd@pure15:~$ lspci -v -s 03:00
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
Flags: bus master, fast devsel, latency 0, IRQ 45
I/O ports at d000 [size=256]
Memory at f7900000 (64-bit, non-prefetchable) [size=4K]
Memory at f2100000 (64-bit, prefetchable) [size=16K]
Capabilities:
Kernel driver in use: r8169
Kernel modules: r8169

Screengrab of wired connection selection
purism-wired-connection-screengrab

Audio

todd@pure15:~$ lspci -v -s 00:03
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
Subsystem: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
Flags: bus master, fast devsel, latency 0, IRQ 50
Memory at f7a14000 (64-bit, non-prefetchable) [size=16K]
Capabilities:
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel
todd@pure15:~$ lspci -v -s 00:1b
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
Subsystem: Device 1991:0269
Flags: bus master, fast devsel, latency 0, IRQ 49
Memory at f7a10000 (64-bit, non-prefetchable) [size=16K]
Capabilities:
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel

Screengrab of audio playback from Rhythmbox
purism-audio-screengrab

Headphone

Screengrab of sound recorder showing headphone hardware jacked:
purism-headphone-screengrab
(microphone from headphone jack also works)

Microphone

Screengrab of sound recorder showing input levels:
purism-microphone-screengrab

Screengrab of audio settings:
purism-microphone-settings-screengrab
(microphone from headphone jack also works)

Webcam

lsusb -v snipped to relevant chipset details

Bus 003 Device 002: ID 090c:37c0 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Silicon Motion Camera
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.)
idProduct 0x37c0 Silicon Motion Camera
bcdDevice 3.13
iManufacturer 0
iProduct 2
iSerial 0
bNumConfigurations 1
...

lsusb showing uvc support

todd@pure15:~$ lsusb -v -s 003:002|grep "14 Video"
Couldn't open device, some information will be missing
bFunctionClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
todd@pure15:~$

Screengrab of webcam application ‘Cheese Webcam Booth’
purism-webcam-screengrab

HDMI

HDMI works via hardware, and is hot swappable.

Screengrab of HDMI audio output from sound settings
purism-hdmi-audio-output-screengrab

CD/DVD

Upon CD/DVD insert dmesg shows:

[11597.003947] UDF-fs: INFO Mounting volume 'DEFAULTNTSC_SCN', timestamp 2006/06/06 16:18 (1e5c)

Screengrab of autodetect option:
purism-cd-dvd-screengrab

SD-MMC

Upon SD-MMC card insert dmesg shows:

[11123.712428] usb 3-6: new high-speed USB device number 6 using xhci_hcd
[11123.990756] usb 3-6: New USB device found, idVendor=0bda, idProduct=0138
[11123.990762] usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11123.990765] usb 3-6: Product: USB2.0-CRW
[11123.990767] usb 3-6: Manufacturer: Generic
[11123.990770] usb 3-6: SerialNumber: 20090516388200000
[11123.996576] ums-realtek 3-6:1.0: USB Mass Storage device detected
[11124.011895] scsi9 : usb-storage 3-6:1.0
[11125.010791] scsi 9:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS
[11125.011428] sd 9:0:0:0: Attached scsi generic sg2 type 0
[11125.922660] sd 9:0:0:0: [sdb] 31383552 512-byte logical blocks: (16.0 GB/14.9 GiB)
[11125.922942] sd 9:0:0:0: [sdb] Write Protect is off
[11125.922945] sd 9:0:0:0: [sdb] Mode Sense: 03 00 00 00
[11125.923230] sd 9:0:0:0: [sdb] No Caching mode page found
[11125.923234] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[11125.924805] sd 9:0:0:0: [sdb] No Caching mode page found
[11125.924808] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[11125.926090] sdb: sdb1
[11125.927474] sd 9:0:0:0: [sdb] No Caching mode page found
[11125.927476] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[11125.927478] sd 9:0:0:0: [sdb] Attached SCSI removable disk

Screengrab of autodetect option:
purism-sd-mmc-screengrab

cpuinfo

todd@pure15:~$ egrep "processor|vendor_id|model|MHz|^$" /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 1
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 2
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 3
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 4
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 5
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 6
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000
processor : 7
vendor_id : GenuineIntel
model : 60
model name : Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz
cpu MHz : 800.000

3D Acceleration from Intel i915, nouveau

root@pure15:~# lspci -k -s 01:00
01:00.0 3D controller: NVIDIA Corporation Device 1341 (rev a2)
Subsystem: Device 1991:558a
Kernel modules: nouveau, nvidiafb

gtkperf
purism-gtkperf

glxgears
purism-glxgears

lspci -v

Showing kernel drivers/modules:

todd@pure15:~$ lspci -v

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
Subsystem: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
Flags: bus master, fast devsel, latency 0
Capabilities:

00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 0000e000-0000efff
Memory behind bridge: f6000000-f70fffff
Prefetchable memory behind bridge: 00000000e0000000-00000000f1ffffff
Capabilities:
Kernel driver in use: pcieport
Kernel modules: shpchp

00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
Subsystem: Device 1991:558a
Flags: bus master, fast devsel, latency 0, IRQ 47
Memory at f7400000 (64-bit, non-prefetchable) [size=4M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Expansion ROM at [disabled]
Capabilities:
Kernel driver in use: i915
Kernel modules: i915

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
Subsystem: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
Flags: bus master, fast devsel, latency 0, IRQ 50
Memory at f7a14000 (64-bit, non-prefetchable) [size=16K]
Capabilities:
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) (prog-if 30 [XHCI])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
Flags: bus master, medium devsel, latency 0, IRQ 44
Memory at f7a00000 (64-bit, non-prefetchable) [size=64K]
Capabilities:
Kernel driver in use: xhci_hcd

00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1
Flags: bus master, fast devsel, latency 0, IRQ 48
Memory at f7a1e000 (64-bit, non-prefetchable) [size=16]
Capabilities:
Kernel driver in use: mei_me
Kernel modules: mei-me

00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05) (prog-if 20 [EHCI])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
Flags: bus master, medium devsel, latency 0, IRQ 16
Memory at f7a1c000 (32-bit, non-prefetchable) [size=1K]
Capabilities:
Kernel driver in use: ehci-pci

00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
Subsystem: Device 1991:0269
Flags: bus master, fast devsel, latency 0, IRQ 49
Memory at f7a10000 (64-bit, non-prefetchable) [size=16K]
Capabilities:
Kernel driver in use: snd_hda_intel
Kernel modules: snd-hda-intel

00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
Capabilities:
Kernel driver in use: pcieport
Kernel modules: shpchp

00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: f7900000-f79fffff
Prefetchable memory behind bridge: 00000000f2100000-00000000f21fffff
Capabilities:
Kernel driver in use: pcieport
Kernel modules: shpchp

00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
Memory behind bridge: f7800000-f78fffff
Capabilities:
Kernel driver in use: pcieport
Kernel modules: shpchp

00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05) (prog-if 20 [EHCI])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
Flags: bus master, medium devsel, latency 0, IRQ 23
Memory at f7a1b000 (32-bit, non-prefetchable) [size=1K]
Capabilities:
Kernel driver in use: ehci-pci

00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 05)
Subsystem: Intel Corporation HM86 Express LPC Controller
Flags: bus master, medium devsel, latency 0
Capabilities:
Kernel driver in use: lpc_ich
Kernel modules: lpc_ich

00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) (prog-if 01 [AHCI 1.0])
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 46
I/O ports at f0b0 [size=8]
I/O ports at f0a0 [size=4]
I/O ports at f090 [size=8]
I/O ports at f080 [size=4]
I/O ports at f060 [size=32]
Memory at f7a1a000 (32-bit, non-prefetchable) [size=2K]
Capabilities:
Kernel driver in use: ahci
Kernel modules: ahci

00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
Subsystem: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller
Flags: medium devsel, IRQ 3
Memory at f7a19000 (64-bit, non-prefetchable) [size=256]
I/O ports at f040 [size=32]
Kernel modules: i2c-i801

01:00.0 3D controller: NVIDIA Corporation Device 1341 (rev a2)
Subsystem: Device 1991:558a
Flags: fast devsel, IRQ 16
Memory at f6000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
Expansion ROM at f7000000 [disabled] [size=512K]
Capabilities:
Kernel modules: nouveau, nvidiafb

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
Flags: bus master, fast devsel, latency 0, IRQ 45
I/O ports at d000 [size=256]
Memory at f7900000 (64-bit, non-prefetchable) [size=4K]
Memory at f2100000 (64-bit, prefetchable) [size=16K]
Capabilities:
Kernel driver in use: r8169
Kernel modules: r8169

04:00.0 Network controller: Qualcomm Atheros AR9485 Wireless Network Adapter (rev 01)
Subsystem: AzureWave Device 2c97
Flags: bus master, fast devsel, latency 0, IRQ 19
Memory at f7800000 (64-bit, non-prefetchable) [size=512K]
Expansion ROM at f7880000 [disabled] [size=64K]
Capabilities:
Kernel driver in use: ath9k
Kernel modules: ath9k

Purism Decides on Wireless Qualcomm Atheros 802.11n over 802.11ac

Purism decided on Qualcomm Atheros chips, primarily since they use free and open source firmware, and have supported the community by writing free software drivers released under the ISC license.

Purism, strictly sticking to its philosophy would only include the ath9k supported chipsets, and will work with the ath10k developers to create a free software driver to replace the nonfree firmware blob within the ath10k driver.

  • NGFF (M.2) uses: Atheros QCNFA222 NGFF 802.11a/b/g/n 2.4GHz/5GHz
  • Half-Height MiniPCIE uses: Atheros AR9845 802.11a/b/g/n 2.4GHz/5GHz