Evaluation of hardwaresupport for ThinkPad X380 Yoga

Hi, I am trying Genode Sculpt OS 25.04 on my Convertible Notebook.
Feel free to extend this. Helpfull comments welcome.

What does the device provide:

CPU: Intel(R) Core™ i5-8350U CPU @ 1.70GHz

$ sudo lspci -tv
-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
           +-02.0  Intel Corporation UHD Graphics 620
           +-04.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem
           +-08.0  Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
           +-13.0  Intel Corporation Sunrise Point-LP Integrated Sensor Hub
           +-14.0  Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
           +-14.2  Intel Corporation Sunrise Point-LP Thermal subsystem
           +-16.0  Intel Corporation Sunrise Point-LP CSME HECI #1
           +-1c.0-[02]----00.0  Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader
           +-1c.2-[04]----00.0  Intel Corporation Wireless 8265 / 8275
           +-1c.4-[05]----00.0  Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
           +-1d.0-[06-3e]--
           +-1d.3-[3f]----00.0  Intel Corporation XMM7360 LTE Advanced Modem
           +-1f.0  Intel Corporation Sunrise Point LPC/eSPI Controller
           +-1f.2  Intel Corporation Sunrise Point-LP PMC
           +-1f.3  Intel Corporation Sunrise Point-LP HD Audio
           +-1f.4  Intel Corporation Sunrise Point-LP SMBus
           \-1f.6  Intel Corporation Ethernet Connection (4) I219-LM
$ sudo lsusb --tree --verbose 
[sudo] Passwort für normans: 
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    |__ Port 007: Dev 002, If 0, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2b Intel Corp. Bluetooth wireless interface
    |__ Port 007: Dev 002, If 1, Class=Wireless, Driver=btusb, 12M
        ID 8087:0a2b Intel Corp. Bluetooth wireless interface
    |__ Port 008: Dev 003, If 0, Class=Video, Driver=uvcvideo, 480M
        ID 13d3:584b IMC Networks 
    |__ Port 008: Dev 003, If 1, Class=Video, Driver=uvcvideo, 480M
        ID 13d3:584b IMC Networks 
    |__ Port 009: Dev 006, If 0, Class=Vendor Specific Class, Driver=[none], 12M
        ID 138a:009d Validity Sensors, Inc. 
    |__ Port 010: Dev 005, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        ID 056a:5150 Wacom Co., Ltd 
    |__ Port 010: Dev 005, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        ID 056a:5150 Wacom Co., Ltd 
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub

The following things works or do not work:

  • Display
    • internal
      • works (including brightness and rotation changeable)
    • external (HDMI)
      • works
  • Trackpad
    • sometimes it do not work (especially after trying to use the touchdisplay or standby mode of the notebook)
  • Trackpoint
  • Touchdisplay*
    • with finger(s) or something similar
      • do not work at all (sometimes the trackpad did not work after trying to use the touchdisplay)
    • with stylus pen
      • do not work at all
  • System standby (power save mode)
    • seems not to work
  • Wifi
    • works
  • audio
  • webcam
3 Likes

Here are a follow up.

  • Audio works - testet in falkon-qt6 (playing a youtube video)
  • 3d graphics works too (tested with glmark2 and doom3)

glmark2 Score: 286

[runtime] child "glmark2"e[0m

[runtime]   RAM quota:  261896Ke[0m

[runtime]   cap quota:  466e[0m

[runtime]   ELF binary: glmark2e[0m

[runtime]   priority:   2e[0m

[runtime -> nic_router] [default] NIC sessions: 0e[0m

[runtime -> glmark2]   0x1000000 .. 0x14ffffff: linker areae[0m

[runtime -> glmark2]   0x40000000 .. 0x4fffffff: stack areae[0m

[runtime -> glmark2]   0x30000 .. 0x150fff: ld.lib.soe[0m

[runtime -> glmark2]   0x116b000 .. 0x1194fff: egl.lib.soe[0m

[runtime -> glmark2]   0x14e1b000 .. 0x14ffffff: libc.lib.soe[0m

[runtime -> glmark2]   0x14d75000 .. 0x14e1afff: vfs.lib.soe[0m

[runtime -> glmark2]   0x1195000 .. 0x11e4fff: jpeg.lib.soe[0m

[runtime -> glmark2]   0x14d33000 .. 0x14d74fff: libm.lib.soe[0m

[runtime -> glmark2]   0x11e5000 .. 0x1221fff: libpng.lib.soe[0m

[runtime -> glmark2]   0x1222000 .. 0x1238fff: zlib.lib.soe[0m

[runtime -> glmark2]   0x1239000 .. 0x2d25fff: mesa.lib.soe[0m

[runtime -> glmark2]   0x2d26000 .. 0x2d55fff: expat.lib.soe[0m

[runtime -> glmark2]   0x2d56000 .. 0x2de1fff: glapi.lib.soe[0m

[runtime -> glmark2]   0x2de2000 .. 0x2e19fff: libdrm.lib.soe[0m

[runtime -> glmark2]   0x14d14000 .. 0x14d2afff: vfs_gpu.lib.soe[0m

[runtime -> glmark2]   0x2e1a000 .. 0x3097fff: stdcxx.lib.soe[0m

[runtime -> glmark2]   0x3098000 .. 0x309afff: mesa_gpu.lib.soe[0m

[runtime -> glmark2] e[34mWarning: ignoring unsupported RTLD_GLOBAL in dlopen()e[0m

[runtime -> glmark2] libEGL warning: MESA-LOADER: failed to retrieve device information

[runtime -> glmark2] 

[runtime -> glmark2] e[34mWarning: _device_gem_get_aperture_size: available_gtt_size (4 KB) is not properly accountede[0m

[runtime -> glmark2] =======================================================

[runtime -> glmark2]     glmark2 2023.01

[runtime -> glmark2] =======================================================

[runtime -> glmark2]     OpenGL Information

[runtime -> glmark2]     GL_VENDOR:      Intel

[runtime -> glmark2]     GL_RENDERER:    Mesa Intel(R) UHD Graphics 620 (KBL GT2)

[runtime -> glmark2]     GL_VERSION:     OpenGL ES 3.2 Mesa 24.0.1

[runtime -> glmark2]     Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0

[runtime -> glmark2]     Surface Size:   800x600 windowed

[runtime -> glmark2] =======================================================

[runtime -> glmark2] [build] use-vbo=false: FPS: 335 FrameTime: 2.992 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [build] use-vbo=true: FPS: 383 FrameTime: 2.613 ms

[runtime -> glmark2] [texture] texture-filter=nearest: FPS: 358 FrameTime: 2.799 ms

[runtime -> glmark2] [texture] texture-filter=linear: FPS: 325 FrameTime: 3.081 ms

[runtime -> glmark2] [texture] texture-filter=mipmap: FPS: 271 FrameTime: 3.693 ms

[runtime -> glmark2] [shading] shading=gouraud: FPS: 289 FrameTime: 3.463 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [shading] shading=blinn-phong-inf: FPS: 291 FrameTime: 3.445 ms

[runtime -> glmark2] [shading] shading=phong: FPS: 293 FrameTime: 3.419 ms

[runtime -> glmark2] [shading] shading=cel: FPS: 293 FrameTime: 3.422 ms

[runtime -> glmark2] [bump] bump-render=high-poly: FPS: 250 FrameTime: 4.016 ms

[runtime -> glmark2] [bump] bump-render=normals: FPS: 332 FrameTime: 3.015 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [bump] bump-render=height: FPS: 324 FrameTime: 3.093 ms

[runtime -> glmark2] [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 285 FrameTime: 3.516 ms

[runtime -> glmark2] [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 273 FrameTime: 3.668 ms

[runtime -> glmark2] e[34mWarning: clock_gettime(): missing real-time clocke[0m

[runtime -> glmark2] [pulsar] light=false:quads=5:texture=false: FPS: 279 FrameTime: 3.594 ms

[runtime -> glmark2] [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 175 FrameTime: 5.741 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [desktop] effect=shadow:windows=4: FPS: 203 FrameTime: 4.939 ms

[runtime -> glmark2] [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 246 FrameTime: 4.070 ms

[runtime -> glmark2] [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 210 FrameTime: 4.763 ms

[runtime -> glmark2] [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 285 FrameTime: 3.518 ms

[runtime -> glmark2] [ideas] speed=duration: FPS: 297 FrameTime: 3.372 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [jellyfish] <default>: FPS: 197 FrameTime: 5.094 ms

[runtime -> glmark2] [terrain] <default>: FPS: 70 FrameTime: 14.403 ms

[runtime -> glmark2] [shadow] <default>: FPS: 303 FrameTime: 3.305 ms

[runtime -> glmark2] [refract] <default>: FPS: 110 FrameTime: 9.151 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [conditionals] fragment-steps=0:vertex-steps=0: FPS: 364 FrameTime: 2.748 ms

[runtime -> glmark2] [conditionals] fragment-steps=5:vertex-steps=0: FPS: 372 FrameTime: 2.692 ms

[runtime -> glmark2] [conditionals] fragment-steps=0:vertex-steps=5: FPS: 371 FrameTime: 2.696 ms

[runtime -> glmark2] [function] fragment-complexity=low:fragment-steps=5: FPS: 365 FrameTime: 2.741 ms

[runtime -> glmark2] [function] fragment-complexity=medium:fragment-steps=5: FPS: 371 FrameTime: 2.699 ms

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> acpi_support] AcpiOsSleep 50 mse[0m

[runtime -> glmark2] [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 337 FrameTime: 2.974 ms

[runtime -> glmark2] [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 344 FrameTime: 2.913 ms

[runtime -> glmark2] [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 290 FrameTime: 3.452 ms

[runtime -> glmark2] =======================================================

[runtime -> glmark2]                                   glmark2 Score: 286

[runtime -> glmark2] =======================================================

[runtime -> glmark2] e[31mError: ID space not empty at destruction timee[0m

[runtime] e[34mWarning: glmark2: could not revert session RAM quota (service=Gpu cid=22 args=', cap_quota=32, label="glmark2 -> ", ram_quota=1047757, diag=0' state=CLOSED ram_quota=122682573, cap_quota=32)e[0m

[runtime -> glmark2] e[34mWarning: 9 dangling allocations at allocator destruction timee[0m

[runtime] child "glmark2" exited with exit value 0e[0m

1 Like

A further follow up. This time about the touch display and the stylus pen in combination with it.

  • touch display (1920x1080 pixel)
    • works (but need some adjustment), see config snippet below
    • after using the touch display the track pad made problems some times (there was no clicking possible anymore)

/config/event_filter:

<transform>
	<scale x="0.164" y="0.1636363636" />
	<input name="usb"/>
</transform>
  • stylus pen
    • do not work (not-yet-supported error message and crash of the usb_hid), see below:
[runtime -> usb_hid] Dropping unsupported Event[4/5] device=Wacom Pen and multitouch sensor Pen type=ABS code=MISC value=17^[[0m
[runtime -> usb_hid] Error: Function devm_power_supply_register not implemented yet!^[[0m
[runtime -> usb_hid] backtrace "ep"^[[0m
[runtime -> usb_hid] Will sleep forever...^[[0m
[core] [init -> eventfilter] Input event #98 ABS_MOTION +143+52 key count: 0^[[0m^[[0m
4 Likes

Welcome to the world of Genode on PC touchscreens! My ThinkPad L380 Yoga has been pretty lonely, but it looks like it’s finally getting some company. :slight_smile:

I haven’t had much time to experiment on the bare metal, but my limited experience with 25.04 matches yours exactly. I did bump into the problem with the audio driver, where I had to hold the power button for 30 seconds to reset the hardware (it wouldn’t play sound in Linux either after rebooting), but other than that, it’s been very smooth.

This is embarrassing, because I know I did it with the 24.10 release, but I’ve forgotten since - where do you put that “transform” snippet for the touchscreen?

1 Like

Good morning. Its the last day of the hack’n’hike.
The transform-snippet belongs to config/event_filter (just copy it from config/managed/event_filter).

2 Likes