Converting SBC into Network 3D Print Server

Using an old SBC like a Raspberry Pi as some kind of network (3D) print server for simple USB printers (or any USB device) without network capabilities. The setup is quite easy and can be done in 30 minutes. 
 
In my case I will use an old odroid-mc1 for my Flashforge Creator Pro 2 3D printer. The printer is connected to the odroid-mc1 via USB and the odroid-mc1 is connected via wired ethernet to my network. For the remote USB functionality I usethe  VirtualHere "trial" edition which allows sharing one device  and its Windows client has a nice GUI. Download the client from: https://www.virtualhere.com/usb_client_software. There are open source USBIP solutions, but Virtualhere is much more convenient and IMHO also more reliable. This print server costs me 2.2 Watt all the time, which is much less than the 15 Watt the printer draws when idle. 
 
On the client side, just run the downloaded client and you can configure a server connection. Then a list of connected USB devices is shown and you can connect/disconnect via right click on each device. When connected, a USB device will behave as it would have been connected directly to your PC. You even need the same drivers as for a locally connected device.
 
 
Required skills: 
- Knowing the model of your SBC
- Writing Image to SD card
- Basic shell/command line experience
- Logging viah SSH
- Edit config files 
 

Basic installation

  1. Download armbian for your device from https://www.armbian.com/download/ the CLI editions are sufficient and have no UI. If you cannot find your device or device version, check something similar named or the first model from your model line, e.g. if you have a Raspberry Pi 3, check the Raspberry Pi download, you device revision may be listed unter "Compatible".  The filter does not show all manufacturer, so just scroll the list down. For my odroid-mc1 I have to scroll down and choose Odroid XU4 / HCx. Read the notes on the page, there might be important settings, as for my odroid-mc1 I can configure an optimized board configuration after installation. 
  2. Flash Armbian Image to sdcard, e.g. BalenaEtcher
  3. Boot Armbian, wait until it is online, this may take some time. I check this by looking at my DHCP logs from my dnsmasq server, you may also get the IP address from your router if  the name registration resolution is not working 
  4. Login as root (any ssh client like PuTTY on windows),password 1234.
    1. Change the root password
    2. Choose your shell
    3. Cancel user account creation with ctrl-c or create a user account if you prefer to type sudo all the time. Your choice.
  5. Do apt update && apt dist-upgrade && reboot
  6. Edit the hostname in the file /etc/hostname. nano is installed, vi needs to be installed with apt install vim or your prefered vi version. My guess the hostname is always the model name. 
  7. If you haven't applied any recommended changes for your machine, do it now, for me it required a reboot, so afterwards the device should be available under the new hostname. 
  8. Install VirtualHere Server on the device by running curl https://raw.githubusercontent.com/virtualhere/script/main/install_server | sh . If you aren't root, write sudo before the sh (not the curl!) as usual. The service is automatically started. On your client, install the VirtualHere client. For some reason he cannot find the server automatically, so I have to add it manually by right clicking on USB Hubs and do "Specify Hubs". Add here your choosen hostname or IP adress + the default port. If any device is connected to your new print server, it should be visible where and with right click yoo can connect it.
  9. Do a reboot with the command reboot and test if  it comes up again. 
  10. If you have connected any USB device, starting the client on the PC and scanning (did not work for me) or configuring a host manually should should the connected USB devices. 
  11. You are ready to use the now "networked" device. Oh and it's by default not encrypted nor password protected. 

Some minor hardening

If you want to power off the server by simply cutting its power, the root filesystem won't be happy about this, even with a journal. To make this safe, we'll make the filesystem read-only, and overlay it with a in-memory filesystem, so logs and other runtime stuff can be written, but every change will be gone after reboot as the underlying filesystem is readonly. 
  1. apt install overlayroot
  2. edit /etc/overlayroot.conf and change the last line to overlayroot="tmpfs"
  3. reboot
By default the system will be updated automatically by unattended-upgrade which is now a little pointless as the updates will be gone after reboot.. As a good exercise on how to make changes, we will remove it and some other packages. 
The normal worklow is the command sequence
  1. overlayroot-chroot
  2. make your changes
  3. exit 
Only this particular session can write to the root filesystem, and with exit you end this session. But I had trouble doing this, often getting the following messages, which make me a bit nervous: 
mount: /media/root-ro: mount point is busy.
ERROR: Note that [/media/root-ro] is still mounted read/write
This happend even with sync before exiting or even when Doing minor changes like config file ediiting.
 
My recommendation is this procedure:
  1. overlayroot-chroot
  2. edit /etc/overlayroot.conf and comment out the line we added earlier by prepending a hash sign. Then do a clean reboot and after that the filesystem is writable again for everybody
  3. reboot
  4. make your changes 
  5. remove the comment hash sign in /etc/overlayroot.conf
  6. reboot
So, back to the uninstallation. run apt autoremove <packages>. I recommend to uninstall these packages
  • Automated updates: unattended-upgrade
  • WiFi functionality: wireless-regdb wireless-tools wpasupplicant
  • Development stuff: gcc-12 cpp-12 gcc-11 git
  • When not running from a real SSD or HDD: smartmontools
  • NFS (this is not file server): rpcbind
Now the system is down to only 100MB RAM consumption, mostly for systemd & networkmanager
 
I had issues like connection losses, reconnection issues, even resets of the printer when trying to connect to the USB device. In the end I solved this issue by disabling the power management for the network chip. Long story cut short: 
  1. Make the root file system writable (see above) 
  2. echo 'SUBSYSTEM=="net", ATTR{power/control}="on"' >>  /etc/udev/rules.d/99-nic-powermanagement.rules
  3. reboot
This is the most generic solution and should work for almost any network device.
 
Now throw the SBC it into some corner and forget it. 
 
Rubrik: 

Disabling power management for network card with udev

I tried to disable power saving on the "network card" in my odroid-mc1 (SBC like Raspberry Pi) which I use as network print server as my 3D printer can be controlled via  USB and SD card . Per default powersaving is on and I assume this is cause of various USB-over-IP issues when the system is idle.
 
# lsusb
Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
 
The interface name is enx001e06373d78 and can be found in /sys/class/net/enx001e06373d78 and with the power management setting in power/control: 
# cat /sys/class/net/enx001e06373d78/power/control
auto
 
auto means activated power management and on is no power powermanagement as per https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-power
 
As usual, settings in sysfs are not persisted and gone after a reboot or reconnect, it's not configurable via sysctl, so the most generic way is in udev and doing so makes it work with other USB ports, other devices, multiple device of the same type, etc. 
 
Either edit an existing udev rule file in /etc/udev/rules.d/ or a create a new one like 99-my-powersettings.rules. The order in which udev rules are processed is sorted by the number in the file name and you want to do this after your network card is configured, so put it at the end. 
 
Udev rules consist of conditions or "filters" and actions. Here are 3 rules that set power/control to on on the odroid-mc1: 
 
# Condition: is network device, actions: write on into its power/control sysfs file (if it exists..)
#SUBSYSTEM=="net", ATTR{power/control}="on"

# Conditions: is network device and has productId 8513, actions: write on into its power/control sysfs file
SUBSYSTEM=="net", ATTRS{idProduct}=="8153" , ATTR{power/control}="on"

# Conditions: is network device and has productId 8513 and power/control is set to auto, then set it to on
#SUBSYSTEM=="net", ATTRS{idProduct}=="8153", ATTR{power/control}=="auto", ATTR{power/control}="on"
 
Parts with == are one type of conditions and single equal sign set values. You cat get a list of possible conditions with 
# udevadm info -a -p /sys/class/net/enx001e06373d78
Be as generic or specific as you like. 
 
Now the funny part and pitfall. It took me some time to get this working, the setting was never applied. Other people had the same issue, sometimes there was a solution provided which did not work.. The issue was that I tried to apply the setting to the "USB device", not the "network device". That does that mean. 
 
In /etc/udev/rules.d/50-usb-realtek-net.rules is a rule (slightly modified for easier reading) for the NIC on the system: 
SUBSYSTEM=="usb", ATTR{idVendor}=="0bda", ATTR{idProduct}=="8153", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
which sets some NIC Mode, whatever this means. But this is my network chip, so I just add ATTR{power/control}="on" and it should never ever go into power management mode again? 
 
Wrong. This operates on the USB endpoint: 
# readlink -f /sys/class/net/enx001e06373d78/device
/sys/devices/platform/soc/soc:usb3-1/12400000.dwc3/xhci-hcd.8.auto/usb6/6-1/6-1:1.0 
 
or shorter /sys/bus/usb/devices/6-1:1.0 which has the referenced bConfigurationValue: 
# ls -al /sys/bus/usb/devices/6-1:1.0/
total 0
drwxr-xr-x 7 root root    0 Jul 15 04:46 .
drwxr-xr-x 6 root root    0 Jul 15 04:46 ..
-rw-r--r-- 1 root root 4096 Jul 15 04:51 authorized
-r--r--r-- 1 root root 4096 Jul 15 04:51 bAlternateSetting
-r--r--r-- 1 root root 4096 Jul 15 04:46 bInterfaceClass
-r--r--r-- 1 root root 4096 Jul 15 04:46 bInterfaceNumber
-r--r--r-- 1 root root 4096 Jul 15 04:51 bInterfaceProtocol
-r--r--r-- 1 root root 4096 Jul 15 04:51 bInterfaceSubClass
-r--r--r-- 1 root root 4096 Jul 15 04:51 bNumEndpoints
...
 
and it does not even have a power/control setting: 
 
# ls -al /sys/bus/usb/devices/6-1:1.0/power
total 0
drwxr-xr-x 2 root root    0 Jul 15 04:46 .
drwxr-xr-x 7 root root    0 Jul 15 04:46 ..
-rw-r--r-- 1 root root 4096 Jul 15 04:51 async
-r--r--r-- 1 root root 4096 Jul 15 04:51 runtime_active_kids
-r--r--r-- 1 root root 4096 Jul 15 04:51 runtime_enabled
-r--r--r-- 1 root root 4096 Jul 15 04:51 runtime_status
-r--r--r-- 1 root root 4096 Jul 15 04:51 runtime_usage
 
And it's not even a network card, remember the NIC was in /sys/class/net, but the SUBSYSTEM in the rule is usb.. So my rule worked on the wrong device, on the "usb device" instead of the network device..
 
A few hours wasted on my first udev adventure & a lesson learned. Always work on the correct device. 
 
Rubrik: 

VirtualBox: !!Assertion Failed!!? Try disabling SME!

After upgrading from an old FX-8350 to a new ThreadRipper VirtualBox was not able to start any VM in Linux. The error  shown in VM was something like "NS_ERROR_FAILURE (0x80004005)"

And in the VM logs were these entries: 

!!Assertion Failed!!
Expression: pVM->pVMR0 == CreateVMReq.pVMR0
Location  : /home/vbox/tinderbox/6.0-lnx64-rel/src/VBox/VMM/VMMR3/VM.cpp(591) int vmR3CreateU(UVM*, uint32_t, int (*)(UVM*, VM*, void*), void*)
Stack     :
00007f8970304133 VBoxRT.so + 0x1f1133
For me this was solved by disabling AMDs Secure Memory Encryption (SME) .You can do this in the BIOS/UEFI Setup, via the linux boot parameter mem_encrypt=off or by disabling this during in your next self-compiled kernel. 
 
This was solved by trying to work around a kernel/firmware/AMD bug which caused errors when trimming/discarding from a NVME with an activated IOMMU. After setting the iommu to passthrough discarding worked, but the Broadcom/LSI/Avago RAID controllers  and the Radeon driver failed to start: 
mpt3sas 0000:09:00.0: SME is active, device will require DMA bounce buffers
mpt2sas_cm0: reply_post_free pool: dma_pool_alloc failed
mpt2sas_cm0: failure at drivers/scsi/mpt3sas/mpt3sas_scsih.c:10506/_scsih_probe()!
radeon 0000:07:00.0: SME is active, device will require DMA bounce buffers
radeon 0000:07:00.0: SME is active, device will require DMA bounce buffers
software IO TLB: SME is active and system is using DMA bounce buffers
[drm:r600_ring_test [radeon]] *ERROR* radeon: ring 0 test failed (scratch(0x8504)=0xCAFEDEAD)
radeon 0000:07:00.0: disabling GPU acceleration
And after disabling SME VirtualBox also worked..
 
Given my fun with my Lenovo notebook last year and the unblogged fun I have/had with my successor  Dell notebook, it seems that the AMD IOMMU is quite a PITA. 

2 of 3 E-Mail addresses from the Verifications.io breach are random

HaveIBeenPwnd just informed me that 3 of my e-mail address are were found in another stupid data breach.Some "e-mail verification" service called "verifications.io" thought it was a good idea to run their database with public internet access and without any password.

I checked the mail addresses found in this breach and 2 of them are random generated addresses I have never used and the third one probably the most generic one I use. All three addresses are being spammed for years..

The first one is being spammed even since before I started my own spam blocker in 2008. There seem to be two other addresses similar one, with the targeted address being a truncated version of the other two. The breached one received 58,451 mail since 2008. One of the others was used once as a spoofed sender address for a spam mail, the other one was used thrice in 2008. 

The second breached email address was first targeted in march 2013 and I counted 817 mails since then. 

For the third address I cannot give any reliable numbers, as this address was in regular use, was found in multiple breaches and received a lot of legitimate email since the beginning of the internet. 

The generated addresses are set to block and autoreport, meaning emails to these address will be rejected (without backscatter) and automatically reported to abuse and spam databases as no legitimate mails should be received on these addresses.

Android: "Hiboard" or "Super Tools" installed? Uninstall Apex Launcher!

I am mad. Since a few days I randomly get advertisments on my Android phone, I thought I just accidently clicked on banners in the browser or so. Now I found a new "app" call "Hiboard" or "Super Tools" when I swipe to the left of the left most screen. It shows some data like battery info, CPU/RAM info and network traffic and offers antivirus and malware scans or most likely to download antivirus and malware snake oil they get a nice commission for. And it shows advertisments. There a slider button for disabling this app, but I did not tested this. This app is not listed in the app list, so I started disabling/deinstalling apps on my phone to see who installed this crap. And it turns out, it's a new function of Apex Launcher. Something I never needed or wanted, something that shows me ads.. So I just deinstalled Apex Launcher. 
Google does not find much when you search for "Hiboard", and most android hits are related to Huawei phones, but I own a Cat S41. 
 
In the end, if you are annoyed of this "Hiboard" "super tools", just deinstall Apex Launcher, the use value of this crap went down with the recent updates of Apex Launcher.

Knackende Tonausgabe auf Dell Latitude 14 5495 beheben

Problem

Während der Soundwiedergabe (Musik, Videos, Spiele) oder sogar während einfacher Windows Benachrichtungstöne ist immer wieder ein Knacken zu hören, unabhängig davon ob man die internen Lautsprecher oder externe Lautsprecher oder Köpfhörer nutzt. Dieses Knacken tritt sogar beim Soundtest in den Realtek-Geräte-Einstellungem, im Windows Mixer und im MaxxAudioPro auf. 

Lösung

Die PCIe Stromspareinstellungen müssen weniger aggressiv eingestellt werden. Mit der rechten Maustaste auf das Batterie/Netzteil-Icon in der Taskleiste klicken, "Energieoptionen" auswählen. Da dann "Erweiterte Energieeinstellungen ändern" rechts neben dem Dell Plan anklicken, wird ein anderer Plan verwendet, dann diesen (auch) bearbeiten.  Unten "Erweiterte Energieeinstellungen ändern" anklicken, im Editor dann "PCI Express" aufklappen und darunter dann den einzigen Eintrag "Verbindungszustand-Energieverwaltung". Für beide Einträge oder, je nach persönlicher Vorliebe für saubere Tonausgabe oder länger Batterielaufzeit, nur für den Netzbetrieb die Einstellung "Mittlere Energieeinsparungen" einstellen. Mit einem Klick auf übernehmen wird die Einstellung direkt aktiv. Ich denke nicht (im Sinne von hoffen) , dass diese Einstellung eine größere Auswirkung auf die Akkulaufzeit hat. Fun Fact: wenn man die Einstellung auf maximale Einsparung zurückstellt und auf Übernehmen klickt, hat man eine hohe Chance schon wieder ein Klicken zu hören ;-) 
 
Mein Dank gilt "Francois Villemaire" der die Lösung im Microsoft Forum gepostet hatte. Im Gegensatz zu dem Fall da war ein Ändern der USB Einstellungen nicht notwendig. 

Meine Meinung

Anstatt an einem meiner Projekte zu arbeiten geht wieder mal ein Abend dabei drauf ein Problem bei einem neugekauften Gerät zu analysieren. Das wird langsam echt ärgerlich. Können die Hersteller keine fehlerfreien, 100% getesten Geräte mehr ausliefern? 
 
Zuerst habe ich versucht verschiedene Treiber zu aktualisieren oder zu downgraden, vor allem den Realtek Soundkartentreiber. Dann habe ich an den Soundeinstellungen rumgespielt, vor allem verschiedene Sampling Raten und Bittiefen, wo aber dann beim Testton schon wieder ein knacken zu vernehmen war. Dieses Knacken ist typisch dafür wenn der Datenstrom abreisst, aus welchem Grund auch immer, und hab dann nach den Ursachen für Buffer Underruns gesucht. Meine letzte Soundblaster ist wegen DPC problemen vor ~10 Jahren rausgflogen, deswegen mal nach DPC und Interrupt Problemen gesucht und als die dann Dank LatencyMon und DPC Latency Checker offensichtlich waren, geguckt wer diese verursachen könnte. Die Ursache habe ich zwar nicht gefunden, aber bin auf der Suche nach Hilfe auf den Forum-Eintrag mit der Energieeinstellung gestolpert. Interessanterweise war dieser ISR/DPC Aufruf ~16,6ms lang, was so ziemlich 1/60s (= 60Hz) lang ist, hatte da fast auf irgendein Problem mit der Grafikkarte oder dem Monitor-VSync getippt. Hab wieder was über Windows gelernt, hätte da aber gerne drauf verzichtet. 

Fundstücke während des Debuggens:

 

How to fix bad audio with clicking noises on Dell Latitude 14 5495

Issue

"Clicks" during during audio playback of music, videos or in games and even with the Windows notifications and during sound tests in the Realtek device settings, Windows mixer settings and in MaxxAudioPro. These clicks can be heard when using the internal speaker or with attached external devices like headphones.

Solution

Disable PCI Express Link State Power Management for your power plan. Right click on power/battery notifcation in the task bar, choose "Power Options",  click on "Change Plan Settings" for the Dell power plan or for the power plan you are currently using, then click on "Change advanced power settings". Expand "PCI Express",  expand "Link State Power Management" and set both to "Moderate Power Savings". I do not know how much battery runtime this costs you, so it's up to you whether you prefer good audio or longer battery time. But I doubt that the power consumption will go up noticably. 
 
Kudos to "Francois Villemaire" who found the solution. No need to disable "USB selective suspend settings" or reboot. The settings will applied immediately when you press "Apply". Fun fact, pressing apply after changing the setting back to maximum may result in an distorted confirmation sound ;-)  

Comment

Another evening wasted on analysing a problem of a new device instead on working on my own projects. This is really annyoing.. why can't a new device just simply work? 
 
I tried updating/downgrading various drivers, changing the realtek driver to a generic audio driver, changed sample rate and bit depth for the device. As these clicking noises are typical for buffer underuns I looked for interrupt and DPC problems and after finding these I went on searching for the culprit causing high Interrupt and/or DPC latency, stopped a lot of services and so on. Unfortunately I did not find the cause, it was just suspicious that the longest ISR/DPCs took ~16,6ms (=> 1/60s). Learned more about Windows, so not all the time was wasted. 
 

Tools & web pages used for debugging: 

 

Dell Latitude 14 5495 & Linux (Ubuntu 18.04)

Instructions to boot Linux on the AMD Mobile Ryzen based Dell Latitude 14 5495:

  1. Connect a bootable Linux USB Device (e.g. Optical Drive, Stick, HDD, etc..)
  2. Boot
  3. Rejoice, Linux will run fine

Okay, it was not so easy. I had trouble with getting the UEFI  to boot from my USB device (the IODD). The UEFI just ignored the device and booted into Win10 from the internal SATA SSD, even when the SSD and the Win bootloader were both disabled in the boot manager. In the end I added manually the EFI bootloader from the Live-CD to the bootmanager by choosing "Add boot option" (or so) and then navigating to the *.efi boot loader on the device. Then I was able to boot via the boot manager. Afterwards I removed the boot entry. Might be an issue with the IODD.

 

Update 2018-10-07

Okay, there are more issues:

Boot Medium not found after Linux

This is rather weird, when (re-boot) after using the installed Ubuntu 18.04, the UEFI/BIOS cannot find the boot medium and I have to enter the UEFI setup. Without changing anything, on the next boot, everything is okay again, and the notebook will boot the default UEFI boot entry (which is WIndows). I have no clue what is causing this. 

PCIe Power Management Log Entry

Seems that the PCIe Power Management does not only cause issues with audio output, NVMes do not like it, too: 

Oct  7 00:51:34 notebook kernel: [  411.718618] pcieport 0000:00:01.5: AER: Multiple Corrected error received: id=0008
Oct  7 00:51:34 notebook kernel: [  411.720690] pcieport 0000:00:01.5: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=000d(Transmitter ID)
Oct  7 00:51:34 notebook kernel: [  411.720698] pcieport 0000:00:01.5:   device [1022:15d3] error status/mask=00001100/00006000
Oct  7 00:51:34 notebook kernel: [  411.720705] pcieport 0000:00:01.5:    [ 8] RELAY_NUM Rollover    
Oct  7 00:51:34 notebook kernel: [  411.720707] pcieport 0000:00:01.5:    [12] Replay Timer Timeout  
Oct  7 00:51:34 notebook kernel: [  411.720716] nvme 0000:04:00.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=0400(Transmitter ID)
Oct  7 00:51:34 notebook kernel: [  411.720718] nvme 0000:04:00.0:   device [126f:2262] error status/mask=00001000/0000e000
Oct  7 00:51:34 notebook kernel: [  411.720720] nvme 0000:04:00.0:    [12] Replay Timer Timeout  
 
Solution is easy, just add pcie_aspm=off to the kernel boot parameters. Source: https://www.thomas-krenn.com/de/wiki/PCIe_Bus_Error_Status_00001100_beheben 
 
Not sure if that is an issue with the NVMe I installed. I replaced the original Intel SATA M.2 with a NVMe ADATA XPG Gammix S11.

Touchpad scrolling does not always work

Haven't found a real solution for this yet. Sometimes scrolling with two fingers on the touchpad does not work. After a reboot it may (or may not) work again.  

Update 2018-12-06

The list grows longer and I renamed this article as booting is no problem, but there are still other issues. 

 

Okay, I tried to do a backup of my windows partition from my installed Ubuntu and a few seconds after pushing over 100MB/s through netcat, the transfer stalled. More precisely, the network connection was dead. Device was up, but nothing went through. In the kernel log I found the entries below. This was reproducible, it also happed in clonezilla, which I tried before and thought the failing connection was a clonezilla issue. Solution or workaround is iommu=soft which was also recommended as alternative workaround for the Lenovo E485 issue. Why can't things just work??? 

Dec  3 23:27:00 notebook kernel: [  162.778572] ------------[ cut here ]------------
Dec  3 23:27:00 notebook kernel: [  162.778604] NETDEV WATCHDOG: enp2s0 (tg3): transmit queue 0 timed out
Dec  3 23:27:00 notebook kernel: [  162.778631] WARNING: CPU: 5 PID: 0 at /build/linux-Y38gIP/linux-4.15.0/net/sched/sch_generic.c:323 dev_watchdog+0x221/0x230
Dec  3 23:27:00 notebook kernel: [  162.778632] Modules linked in: ccm rfcomm arc4 cmac bnep nls_iso8859_1 snd_hda_codec_realtek dell_laptop joydev snd_hda_codec_hdmi snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_pcm ath10k_pci snd_seq_midi
 ath10k_core snd_seq_midi_event edac_mce_amd snd_rawmidi btusb ath dell_wmi kvm_amd mac80211 kvm dell_smbios snd_seq irqbypass input_leds hid_multitouch btrtl dcdbas btbcm wmi_bmof sparse_keymap serio_raw btintel dell_wmi_descriptor bluetooth snd_seq_device k10temp snd_t
imer ecdh_generic snd cfg80211 soundcore rtsx_pci_ms memstick shpchp ucsi_acpi typec_ucsi typec dell_rbtn dell_smo8800 mac_hid sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 xfs libcrc32c algif_skcipher af_alg dm_crypt amdkfd rtsx_pci_sdmmc amd_iommu
_v2 crct10dif_pclmul crc32_pclmul
Dec  3 23:27:00 notebook kernel: [  162.778705]  ghash_clmulni_intel pcbc amdgpu aesni_intel chash aes_x86_64 i2c_algo_bit crypto_simd ttm glue_helper cryptd drm_kms_helper ahci syscopyarea sysfillrect libahci psmouse sysimgblt fb_sys_fops tg3 drm nvme ptp i2c_piix4 nvme_core rtsx_pci pps_core wmi video i2c_hid hid
Dec  3 23:27:00 notebook kernel: [  162.778735] CPU: 5 PID: 0 Comm: swapper/5 Tainted: G        W        4.15.0-42-generic #45-Ubuntu
Dec  3 23:27:00 notebook kernel: [  162.778737] Hardware name: Dell Inc. Latitude 5495/09H2MJ, BIOS 1.2.3 06/20/2018
Dec  3 23:27:00 notebook kernel: [  162.778740] RIP: 0010:dev_watchdog+0x221/0x230
Dec  3 23:27:00 notebook kernel: [  162.778742] RSP: 0018:ffff88719f743e58 EFLAGS: 00010286
Dec  3 23:27:00 notebook kernel: [  162.778745] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
Dec  3 23:27:00 notebook kernel: [  162.778746] RDX: 0000000000040400 RSI: 00000000000000f6 RDI: 0000000000000300
Dec  3 23:27:00 notebook kernel: [  162.778748] RBP: ffff88719f743e88 R08: 0000000000000001 R09: 0000000000000458
Dec  3 23:27:00 notebook kernel: [  162.778749] R10: ffff88719f743ee0 R11: 0000000000000000 R12: 0000000000000005
Dec  3 23:27:00 notebook kernel: [  162.778751] R13: ffff88719d0cc000 R14: ffff88719d0cc478 R15: ffff88719d0c1580
Dec  3 23:27:00 notebook kernel: [  162.778753] FS:  0000000000000000(0000) GS:ffff88719f740000(0000) knlGS:0000000000000000
Dec  3 23:27:00 notebook kernel: [  162.778755] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Dec  3 23:27:00 notebook kernel: [  162.778756] CR2: 00005556bcadd018 CR3: 000000041952c000 CR4: 00000000003406e0
Dec  3 23:27:00 notebook kernel: [  162.778758] Call Trace:
Dec  3 23:27:00 notebook kernel: [  162.778761]  <IRQ>
Dec  3 23:27:00 notebook kernel: [  162.778767]  ? dev_deactivate_queue.constprop.33+0x60/0x60
Dec  3 23:27:00 notebook kernel: [  162.778773]  call_timer_fn+0x30/0x130
Dec  3 23:27:00 notebook kernel: [  162.778775]  run_timer_softirq+0x3fb/0x450
Dec  3 23:27:00 notebook kernel: [  162.778779]  ? ktime_get+0x43/0xa0
Dec  3 23:27:00 notebook kernel: [  162.778783]  ? lapic_next_event+0x20/0x30
Dec  3 23:27:00 notebook kernel: [  162.778787]  __do_softirq+0xe4/0x2bb
Dec  3 23:27:00 notebook kernel: [  162.778792]  irq_exit+0xb8/0xc0
Dec  3 23:27:00 notebook kernel: [  162.778794]  smp_apic_timer_interrupt+0x79/0x130
Dec  3 23:27:00 notebook kernel: [  162.778797]  apic_timer_interrupt+0x84/0x90
Dec  3 23:27:00 notebook kernel: [  162.778798]  </IRQ>
Dec  3 23:27:00 notebook kernel: [  162.778804] RIP: 0010:cpuidle_enter_state+0xa7/0x2f0
Dec  3 23:27:00 notebook kernel: [  162.778805] RSP: 0018:ffff95c50196be68 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff11
Dec  3 23:27:00 notebook kernel: [  162.778808] RAX: ffff88719f762880 RBX: 00000025e65b82c5 RCX: 000000000000001f
Dec  3 23:27:00 notebook kernel: [  162.778809] RDX: 00000025e65b82c5 RSI: fffffff86bc6ac80 RDI: 0000000000000000
Dec  3 23:27:00 notebook kernel: [  162.778810] RBP: ffff95c50196bea8 R08: 00000000000b5a00 R09: 00000000000f13ac
Dec  3 23:27:00 notebook kernel: [  162.778812] R10: ffff95c50196be38 R11: 00000000000b3abe R12: ffff88719cdf5800
Dec  3 23:27:00 notebook kernel: [  162.778813] R13: 0000000000000002 R14: ffffffffb17806f8 R15: 0000000000000000
Dec  3 23:27:00 notebook kernel: [  162.778817]  ? cpuidle_enter_state+0x97/0x2f0
Dec  3 23:27:00 notebook kernel: [  162.778820]  cpuidle_enter+0x17/0x20
Dec  3 23:27:00 notebook kernel: [  162.778824]  call_cpuidle+0x23/0x40
Dec  3 23:27:00 notebook kernel: [  162.778827]  do_idle+0x18c/0x1f0
Dec  3 23:27:00 notebook kernel: [  162.778829]  cpu_startup_entry+0x73/0x80
Dec  3 23:27:00 notebook kernel: [  162.778832]  start_secondary+0x1ab/0x200
Dec  3 23:27:00 notebook kernel: [  162.778836]  secondary_startup_64+0xa5/0xb0
Dec  3 23:27:00 notebook kernel: [  162.778838] Code: 38 00 49 63 4e e8 eb 92 4c 89 ef c6 05 b9 d7 d8 00 01 e8 83 35 fd ff 89 d9 48 89 c2 4c 89 ee 48 c7 c7 f8 98 39 b1 e8 df 95 80 ff <0f> 0b eb c0 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 
Dec  3 23:27:00 notebook kernel: [  162.778880] ---[ end trace 6b2996ceccee82db ]---
Dec  3 23:27:00 notebook kernel: [  162.778887] tg3 0000:02:00.0 enp2s0: transmit timed out, resetting
Dec  3 23:27:00 notebook kernel: [  165.372272] tg3 0000:02:00.0 enp2s0: 0x00000000: 0x168714e4, 0x20100406, 0x02000010, 0x00000000
Dec  3 23:27:00 notebook kernel: [  165.372285] tg3 0000:02:00.0 enp2s0: 0x00000010: 0xe022000c, 0x00000000, 0xe021000c, 0x00000000
Dec  3 23:27:00 notebook kernel: [  165.372291] tg3 0000:02:00.0 enp2s0: 0x00000020: 0xe020000c, 0x00000000, 0x00000000, 0x08141028
Dec  3 23:27:00 notebook kernel: [  165.372297] tg3 0000:02:00.0 enp2s0: 0x00000030: 0x00000000, 0x00000048, 0x00000000, 0x000001ff
Dec  3 23:27:00 notebook kernel: [  165.372302] tg3 0000:02:00.0 enp2s0: 0x00000040: 0x00000000, 0xea000000, 0xc8035001, 0x16002008
Dec  3 23:27:00 notebook kernel: [  165.372308] tg3 0000:02:00.0 enp2s0: 0x00000050: 0x00005803, 0x00000000, 0x0086a005, 0x00000000
Dec  3 23:27:00 notebook kernel: [  165.372313] tg3 0000:02:00.0 enp2s0: 0x00000060: 0x00000000, 0x00000000, 0xf1000298, 0x01f802d1
[... 1000s of lines...]

Also in the news: VIDEO_TDR_FAILURE BSODs in Windows while browsing the internet with a chromium based browser.. Given enough time all devices become terrible.. 

 

Windows 10 1803 Upgrade fails with 0xc1900101? Veracrypt installed?

If the 1803 update of Windows 10 fails repeatedly with the error code 0xc1900101 and if you are using full system encryption with Veracrypt 1.22 or older, you should upgrade to the latest beta release or the latest stable release if 1.23 or later is available.  Excerpt from the changelog of 1.23 Beta 2:

Changes between 1.22 and 1.23-BETA2 (5 July 2018) :
  - Windows:
     * Add compatibility of system encryption with Windows 10 upgrade using ReflectDrivers mechanism.

If this error occurs, after the update restart you will end up in some kind of recovery menu. If you select "continue with the current windows version", the computer will reboot and the previous non-updated windows will be started. In  the event log (eventvwr)  under Windows Logs/System there should be at least one error with WindowsUpdateClient as source with the event ID 20 and code 0xc1900101 in the text.

The discussion in this thread (German) was not helpful as no logs in this %windir%\Panther directory existed. 

Rubrik: 

Lenovo Thinkpad E485 Review (english)

 
The Lenovo Thinkpad Edge E485 is the AMD counterpart to the Thinkpad Edge 480. The Edge models E585 and E580 are variants with a 15.4" display and numeric keypad. It was released two weeks ago, but so far there has now been much press coverage or reviews 
 
Let's start with the outer appearance. The E485 has a black plastic shell with aluminum on the outside of the display lid which gives it a high-value feeling. Unfortunately when typing or resting the hand on the right side there is rattling coming fromt the right side (Youtube Clip 1, Clip 2). As I planned to upgrade the E485 with more RAM and a 2nd SSD, I had also a look from where the rattling comes. How to fix this is described below. Although the bottom case uses screws, it also is clipped to the top side. During my first try to remove the bottom case I broke a few clips and now it has a small gap in one corner :(.
For more information on opening the notebook I can recommend the official maintenance manual (https://download.lenovo.com/pccbbs/mobiles_pdf/tp-e480-e485-r480-hmm-en.pdf and this Youtube video (https://www.youtube.com/watch?v=IDkoD0iF-Xs
 
The battery is not replacable without removing the bottom cover, but at least it is replaceable and not glued in. I hope Lenovo will offer spare batteries. Other components like NVME, SSD/HDD, RAM & WiFi-module are replacable, so adding a 2nd SODIMM and SSD was easy. Oddly there was a folded ESD bag glued with duct tape beneath the drive dummy in the 2.5" slot. 
 
The preinstalled Windows 10 Pro was pleasantly free of 3rd party bloat ware. A few Lenovo applications are installed, but sofar I have not found use for them. The other useless preinstalled crap like MS Office demo, Candy Crush App downloader and so are part of Windows 10. Unfortunately for Linux you need some boot parameter as a work around.
 
The display showed has a hot pixel in the first days, but it vanished after some time (it's back :( ). Especially in b/w Linux terminals a constant bright pixel is very annoying. I hope it's gone forever. The display itself is a anti-glare IPS panel. 
 
A constant pain for me is the keyboard, with the 2012 generation Lenovo dropped the old keyboard layout with the separate navigation block. At least Lenovo does not move them into an additional column on the right side, obscuring enter, right shift, backspace and so on. The noisy touchpad of the 2014 was improved and does not click so loud anymore. The separate buttons for the trackpoint are back, but not the buttons on the bottom of the touchpad, so there's stil no haptic feedback if you are in the right zone for a left or right click. There is a nice 4 your old rant on Youtube: https://www.youtube.com/watch?v=doEZMNXz1JY. The Thinkpad 25 might have become a interesting alternative, but Lenovo botched that https://www.youtube.com/watch?v=UxQGhqF60zE
 
During use the notebook gets a little bit warm, but not hot. This might be the reason the CPU/GPU combo is set to 15 Watt TDP, theoretically the R5 2500U could be configured to 25 Watt. Due to the limited cooling in a notebook the turbo frequencies cannot keep for long and not on all cores. With load on all cores 1-2 cores can go up to 3-3.6GHz, but the others fall below the 2.0 Ghz base frequency. So I doubt that the larger R7 2700U can make better use of its additional 200 MHz base clock and turbo clock. It's listed on the Lenovo homepage, but currently not  available in the configurator.
 
I am quite happy with the performance. Despite running Veracrypt, antivirus and a lot of background process it never feels sluggish. It is surely not meant as a gaming machine, but for graphically lighter games it should be sufficient. The Ryzen CPU has a dual channel memory controller and adding a second SODIMM helps at least in 3DMark. In Time Spy a second memory module yielded a 30% higher score. Additionally the Steam achievements "What's the Rush?" (<5FPS in Time Spy) and "OC Madness" ("Only experts should try to push their CPU more than 50% over stock"; 2 GHz base clock/3.6 Ghz turbo). Sure other applications will benefit from more memory and bandwidth. Other vendors only have only one memory module and no slot for a second. 
 
I did a comparison test with the Dell Notebook in september and the E485 showed a nice performance increase in 3DMark.
 
3DMark Benchmarks
Benchmark Single Channel Dual Channel Dual Channel 2018-09-07 E480 w/o discrete GPU E480 + Radeon 550
Sky Diver 5932 7085 (+20%) 7727 (+9%) 346(?) - 4587(?)

4424(?) - 12896(?)

Time Spy 585 761 (+30%) 762 300 - 433 913 - 997
Fire Strike   1956 2212 (+13%)    

(Note: The E480 values are taken from the 3DMark Database)

Unigine Heaven Benchmark
Resolution FPS Score Min FPS Max FPS
720p 1st run 40.6 1023 8.3 77.4
720p 2nd run 40.2 1012 16.9 79.5
1080p 1st run 19.9 502 6.6 37.0
1080p 2nd run 18.9 476 13.0 34.5

7-Zip benchmark CPU-Z Benchmark

 
Regarding battery life I cannot say much, but interestingly Lenovo gives only 9.37h (was 9h earlier) runtime on battery for the E485, but the E480 with the same battery is supposed to run 13h. The longest estimate I got was around 6-7 hours with very light web browsing and work and 25% brightness. With 45Wh battery capacity and 9 hours runtime the device must not consume more than 5 Watt. I only achieved this in Windows with 0% screen brightness and everything closed except BatteryMon. Not very useful.. but to be fair I must admit I added a second RAM module and an old Samsung SSD, which was not configured in Windows. Other people also complain about battery time.
 
Another bit letdown is the audio quality. I do not expect much from integrated laptop speakers, but the audio quality on headphones was surprisingly bad. At first I thought the stream was the problem with too low bitrate or something like this, so I went on debugging my audio server, I even ripped the CD again, but in end it was the DAC in the notebook. I tried a couple of settings and profiles, but at least for music it was just awful. 
 
The keyboard issue, where fast typing caused certain key combinations to get registered in a different, was solved after some weeks with a BIOS update. Funny story, I opened a support ticket for this issue in the hope of getting this BIOS update early, I got a reply quite fast, but did not read it as I had no time and was out of town. The next day fedex rang at my door and wanted to pickup the notebook, to my surpise. That was quite fast, but Lenovo or Fedex really should ask for when the customer is at home for the pickup. 
 
During boot, you can press enter to interrupt boot and then go to the BIOS or Boot Manager. The funny thing is that this stopped worked at some point. F2 and F12 were still working and the enter key worked in UEFI setup and in the boot loaders, but the enter key did not stop the boot anymore. At that point you see the red Lenovo log and the message "Press Enter to interrupt boot". 
 
On the plus side, one the of the updates also gave a nice performance boost. (I will update the tables above later). Updated.
 
And one comment on the pricing, for RAM and NVMe it is cheaper to downgrade the standard option and buy the a larger device yourself than buying the option. In the end you pay less and have additionally the preinstalled module you can keep or sell. As for the 2.5" drive slot you can only buy HDDs, so if you want a second SSD, you have to install one on your owns  The possible configuration options are quite limited in comparison to the Intel based E480.  In Germany you can upgrade from 8GB RAM to 16GB for currently ~127€, if you do the upgrade yourself, you can buy one 8GB module with the same spec for 60€, but then you won't the Lenovo warranty. For the NVMe, you can save 70€ by downgrading the NVMe from 256GB to 128GB and buy a faster NVMe for the same price, or a for additional 30€ a NVMe twice as large. For the 2.5" you can choose between 2 HDDs or youi can install a SSD yourself. Funnily when buying from Lenovo you will get the 45Watt PSU, but for 1,19€ more (1€+VAT) you can upgrade to 65Watt PSU. 
 
Unspecified components built in: 
 
NVME

Samsung NVMe MZVLW256HEHP-000L7

RAM

Hyundai Hynix DDR4 2400 8GB HMA81GS6AFR8NUH CL-17-17-17-39 (Single Rank)

WLAN

Qualcomm Atheros QCA9377 Wireless Network Adapter

LAN

Realtek PCIe GBE Family Controller (RTL8111/8168/8411)

SD Adapter

BayHubTech Integrated MMC/SD controller (O2 Micro Inc., PCI)

Bluetooth Atheros USB based

Rattling

Real annoying is the metallic rattling on the right side. When I type or lay my hand on rest it rattles. This is really annoying and makes the notebook sound shoody. After a couple of tries it narrowed down to something that looks like a slot bracket with padding to keep the NVMe down. This bracked is clamped down on the short sides and fixed with a screw on one long side. Beneath the bracket is metal ventilation grille and beneath that are ventilation slits of the bottom case. I tried to clamp it tighter down with a piece of duct tape, but it did not work. I planned to to try double sided tape, but instead I removed the bracket under the assumption that the NVMe is sufficiently fixed in place. The rattle went away. My guess is that the E480 has the same issw No idea was wrong with my device as Lenovo was not able to reproduce this. 

I put the duct there, it did not help I put the duct there, it did not helpNoisy bracket

 

So, i think this is the last update. I sold the notebook and everything I have to say is written here. 

Rubrik: 

Pages