Evaluation of hardwaresupport for ThinkPad X380 Yoga

Hi @jjkarcher and @jschlatow would you like to write articles for your own devices and your experiences with it too? You mentioned that you tried the new Framework 16 notebook and Starlabs Starlite. I think the output of lshw (see examples above), some info what works well (and maybe how you solved problems you ran into) and a link to the spec would be helpful.

1 Like

Hi, in my opinion the hardware category would fit most.

1 Like

I will give it a new try. Thanks to @nfeske for general hints and the explanation on how to prevent restarts of VMs after suspending the host system.

@jjkarcher @nos I just published a Sculpt/hw image on my depot with added touch support for the window manager. Note that this also implied changes to the nitpicker, which is part of the static Sculpt system…therefore the new image. The image also comes with an event_filter config that is customized to my StarLite. Don’t be distracted by the additional filters as they are only effective for the input events from my touchscreen driver.

1 Like

Hello, I tried the new image on my X380 Yoga. However, the touch display worked poorly or not at all. Even with the mouse, I often had to click several times. Occasionally, program windows from Shell or Nano3d, for example, simply disappeared sometimes after tapping and did not reappear even after restarting the corresponding component.

Here comes my modified part of the /config/event_filter:

          <log motion="yes">
            <transform>
              <scale x="0.164" y="0.164" />
              <input name="usb"/>
            <transform/>
          </log>

And here are some snippets of my /report/log:

...

2.1 [runtime -> usb] usb 1-10: new full-speed USB device number 6 using xhci_hcde[0m
2.2 [runtime -> usb_hid] wacom 0003:056A:5150.0002: : USB HID v1.11 Device [Wacom Co.,Ltd. Pen and multitouch sensor] on usb-usbbus-0/input0e[0m
2.2 [runtime -> usb_hid] input: Wacom Pen and multitouch sensor Finger as /devices/usb-1-6/0-0:1.0/0003:056A:5150.0002/input/input2e[0m
2.2 [runtime -> usb_hid] Connected device: input2 (Wacom Pen and multitouch sensor Finger at usb-usbbus-0/input0) MULTITOUCH TOUCHSCREENe[0m
2.2 [runtime -> usb_hid] wacom 0003:056A:5150.0003: : USB HID v1.11 Mouse [Wacom Co.,Ltd. Pen and multitouch sensor] on usb-usbbus-0/input1e[0m
2.2 [runtime -> usb_hid] input: Wacom Pen and multitouch sensor Pen as /devices/usb-1-6/0-0:1.1/0003:056A:5150.0003/input/input4e[0m
2.3 [runtime -> usb_hid] Connected device: input4 (Wacom Pen and multitouch sensor Pen at usb-usbbus-0/input1) TOUCHTOOLe[0m

...

306.7 [runtime -> inspect -> bash -> 1] e[34mWarning: chmod: chmod not implementede[0m
319.4 [runtime -> inspect -> bash -> 1] e[34mWarning: chmod: chmod not implementede[0m
324.2 [runtime -> acpi_support] AcpiOsSleep 50 mse[0m
324.2 [runtime -> acpi_support] AcpiOsSleep 50 mse[0m
340.3 [runtime] child "touchscreen"e[0m
340.3 [runtime]   RAM quota:  7944Ke[0m
340.3 [runtime]   cap quota:  86e[0m
340.3 [runtime]   ELF binary: pc_i2c_hide[0m
340.3 [runtime]   priority:   2e[0m
340.4 [runtime -> touchscreen] using IRQ 104 bus_addr=93 hid_addr=1e[0m
340.4 [runtime -> touchscreen] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
340.4 [runtime -> touchscreen] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
340.4 [runtime -> touchscreen] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
340.4 [runtime -> touchscreen] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
340.4 [runtime -> touchscreen] pinctrl core: initialized pinctrl subsysteme[0m
340.4 [runtime -> touchscreen] new Acpi::Device name=STARLITE_TOUCH handle=0x1e[0m
340.4 [runtime -> touchscreen] new Acpi::Device name=I2C3 handle=0x2e[0m
340.4 [runtime -> touchscreen] new Acpi::Device name=EPTP handle=0x3e[0m
340.4 [runtime -> touchscreen] clocksource: Switched to clocksource dde_countere[0m
340.4 [runtime -> touchscreen] sched_clock: Marking stable (0, 8444000)->(9493000, -1049000)e[0m

...

531.1 [runtime] child "touchpad"e[0m
531.1 [runtime]   RAM quota:  7944Ke[0m
531.1 [runtime]   cap quota:  86e[0m
531.1 [runtime]   ELF binary: pc_i2c_hide[0m
531.1 [runtime]   priority:   2e[0m
531.1 [runtime -> touchpad] using GPIO pin 266 via INT34C5 bus_addr=44 hid_addr=32e[0m
531.2 [runtime -> touchpad] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
531.2 [runtime -> touchpad] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
531.2 [runtime -> touchpad] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
531.2 [runtime -> touchpad] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
531.2 [runtime -> touchpad] pinctrl core: initialized pinctrl subsysteme[0m
531.2 [runtime -> touchpad] new Acpi::Device name=INT34C5 handle=0x1e[0m
531.2 [runtime -> touchpad] new Acpi::Device name=I2C3 handle=0x2e[0m
531.2 [runtime -> touchpad] new Acpi::Device name=EPTP handle=0x3e[0m
531.2 [runtime -> touchpad] clocksource: Switched to clocksource dde_countere[0m
531.2 [runtime -> touchpad] sched_clock: Marking stable (0, 9919000)->(11047000, -1128000)e[0m
542.3 [runtime] child "touchpad"e[0m
542.3 [runtime]   RAM quota:  7944Ke[0m
542.3 [runtime]   cap quota:  86e[0m
542.3 [runtime]   ELF binary: pc_i2c_hide[0m
542.3 [runtime]   priority:   2e[0m
542.4 [runtime] child "touchscreen"e[0m
542.4 [runtime]   RAM quota:  7944Ke[0m
542.4 [runtime]   cap quota:  86e[0m
542.4 [runtime]   ELF binary: pc_i2c_hide[0m
542.4 [runtime]   priority:   2e[0m
542.4 [runtime -> touchscreen] using IRQ 104 bus_addr=93 hid_addr=1e[0m
542.4 [runtime -> touchpad] using GPIO pin 266 via INT34C5 bus_addr=44 hid_addr=32e[0m
542.5 [runtime -> touchscreen] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
542.5 [runtime -> touchscreen] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
542.5 [runtime -> touchscreen] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
542.5 [runtime -> touchpad] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
542.5 [runtime -> touchpad] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
542.5 [runtime -> touchpad] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
542.5 [runtime -> touchscreen] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
542.5 [runtime -> touchscreen] pinctrl core: initialized pinctrl subsysteme[0m
542.5 [runtime -> touchscreen] new Acpi::Device name=STARLITE_TOUCH handle=0x1e[0m
542.5 [runtime -> touchscreen] new Acpi::Device name=I2C3 handle=0x2e[0m
542.5 [runtime -> touchscreen] new Acpi::Device name=EPTP handle=0x3e[0m
542.5 [runtime -> touchscreen] clocksource: Switched to clocksource dde_countere[0m
542.5 [runtime -> touchscreen] sched_clock: Marking stable (0, 35400000)->(38784000, -3384000)e[0m
542.5 [runtime -> touchpad] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
542.5 [runtime -> touchpad] pinctrl core: initialized pinctrl subsysteme[0m
542.5 [runtime -> touchpad] new Acpi::Device name=INT34C5 handle=0x1e[0m
542.5 [runtime -> touchpad] new Acpi::Device name=I2C3 handle=0x2e[0m
542.5 [runtime -> touchpad] new Acpi::Device name=EPTP handle=0x3e[0m
542.5 [runtime -> touchpad] clocksource: Switched to clocksource dde_countere[0m
542.5 [runtime -> touchpad] sched_clock: Marking stable (0, 14372000)->(16776000, -2404000)e[0m
544.2 [runtime -> acpi_support] AcpiOsSleep 50 mse[0m
544.2 [runtime -> acpi_support] AcpiOsSleep 50 mse[0m
554.3 [runtime] child "touchpad"e[0m
554.3 [runtime]   RAM quota:  7944Ke[0m
554.3 [runtime]   cap quota:  86e[0m
554.3 [runtime]   ELF binary: pc_i2c_hide[0m
554.3 [runtime]   priority:   2e[0m
554.4 [runtime -> touchpad] using GPIO pin 266 via INT34C5 bus_addr=44 hid_addr=32e[0m
554.4 [runtime -> touchpad] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
554.4 [runtime -> touchpad] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
554.4 [runtime -> touchpad] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
554.4 [runtime -> touchpad] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
554.4 [runtime -> touchpad] pinctrl core: initialized pinctrl subsysteme[0m
554.4 [runtime -> touchpad] new Acpi::Device name=INT34C5 handle=0x1e[0m
554.4 [runtime -> touchpad] new Acpi::Device name=I2C3 handle=0x2e[0m
554.4 [runtime -> touchpad] new Acpi::Device name=EPTP handle=0x3e[0m
554.4 [runtime -> touchpad] clocksource: Switched to clocksource dde_countere[0m
554.4 [runtime -> touchpad] sched_clock: Marking stable (0, 9341000)->(10423000, -1082000)e[0m
556.4 [runtime] child "touchpad"e[0m
556.4 [runtime]   RAM quota:  7944Ke[0m
556.4 [runtime]   cap quota:  86e[0m
556.4 [runtime]   ELF binary: pc_i2c_hide[0m
556.4 [runtime]   priority:   2e[0m
556.5 [runtime -> touchpad] using GPIO pin 266 via INT34C5 bus_addr=44 hid_addr=32e[0m
556.5 [runtime -> touchpad] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
556.5 [runtime -> touchpad] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
556.5 [runtime -> touchpad] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
556.5 [runtime -> touchpad] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
556.5 [runtime -> touchpad] pinctrl core: initialized pinctrl subsysteme[0m
556.5 [runtime -> touchpad] new Acpi::Device name=INT34C5 handle=0x1e[0m
556.5 [runtime -> touchpad] new Acpi::Device name=I2C3 handle=0x2e[0m
556.5 [runtime -> touchpad] new Acpi::Device name=EPTP handle=0x3e[0m
556.5 [runtime -> touchpad] clocksource: Switched to clocksource dde_countere[0m
556.5 [runtime -> touchpad] sched_clock: Marking stable (0, 8157000)->(9278000, -1121000)e[0m
564.2 [runtime -> acpi_support] AcpiOsSleep 50 mse[0m
564.2 [runtime -> acpi_support] AcpiOsSleep 50 mse[0m
568.4 [runtime] child "touchpad"e[0m
568.4 [runtime]   RAM quota:  7944Ke[0m
568.4 [runtime]   cap quota:  86e[0m
568.4 [runtime]   ELF binary: pc_i2c_hide[0m
568.4 [runtime]   priority:   2e[0m
568.4 [runtime -> touchpad] using GPIO pin 266 via INT34C5 bus_addr=44 hid_addr=32e[0m
568.4 [runtime -> touchpad] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1e[0m
568.4 [runtime -> touchpad] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256e[0m
568.4 [runtime -> touchpad] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 nse[0m
568.4 [runtime -> touchpad] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 nse[0m
568.4 [runtime -> touchpad] pinctrl core: initialized pinctrl subsysteme[0m
568.4 [runtime -> touchpad] new Acpi::Device name=INT34C5 handle=0x1e[0m
568.4 [runtime -> touchpad] new Acpi::Device name=I2C3 handle=0x2e[0m
568.4 [runtime -> touchpad] new Acpi::Device name=EPTP handle=0x3e[0m
568.4 [runtime -> touchpad] clocksource: Switched to clocksource dde_countere[0m
568.4 [runtime -> touchpad] sched_clock: Marking stable (0, 37090000)->(38382000, -1292000)e[0m
570.3 [runtime] child "system_clock_rw"e[0m
570.3 [runtime]   RAM quota:  4872Ke[0m
570.3 [runtime]   cap quota:  366e[0m
570.3 [runtime]   ELF binary: inite[0m
570.3 [runtime]   priority:   3e[0m
570.3 [runtime]   provides service Rtce[0m
570.3 [runtime]   provides service Reporte[0m

...

That’s unfortunate. This raise a few questions, though:

  • Please do not use the “touchscreen” launcher as this is only supposed to be used
    for the StarLite. Please also refrain from using the “touchpad” launcher for the
    sake of debugging.
  • What file system are you using? Please try it with ram_fs to make sure that none of your
    persistently stored config files are interfering.
  • Does touch and mouse input work in Leitzentrale at least?
  • Since you’ve already enabled the logging of motion events, I’d be very much interested in an
    excerpt of the event log. This is best accompanied with a detailed description of where
    you touched or clicked.

I tried it again following your hints. This time it worked ways better. Mouse, touchpad (and after configuration touchdisplay too) works as it should. Here come the log you asked for.

Event log:

  1. preparation (use ram_fs, activate network, edit the event_filter)
  • using Mouse and Touchpad (works as it should)
  1. in Leitzentrale tap on the “system info” an “system clock” component
  • works as it should
  1. try to move the window using long tap on its window header and move
  • works unexpected good
  1. in system view tap on the window header of “unix_shell”, try to maximize it and back
  • works (but my finger seems to large for the small button so I need several tries)

To save the logfile I tried to use the usbdrive again as persistent memory.
Touch is still working in Leitzentrale but the unix_shell window disappeared. I tried to add a system_shell component but no program window appears (a bit similar to yesterday).

After completely reinstalling SculptOS to the usbdrive I tried it again. Now it works without problems! Even window resizing is fun. :slight_smile:

Many thanks for improving the touchdisplay functionality!

3 Likes

I finally got a chance to try this, and it worked out of the box for me on the L380 Yoga. Very nice!

1 Like

And here comes the translation to the new hid format:

+ transform
  + input usb
  + scale x: 0.164 | y: 0.164

I like it because it looks so much simpler to me (but xml was ok too).

2 Likes

Please note that there now must be | before the x:, i.e. an attribute (including the first attribute) must always be separated by a |. In an earlier version of the HID format, this was not necessary, though.

1 Like