Dienstag, 21. November 2023

[Review/Critic] UDock X - 13,3" LapDock

The UDock X - 13.3" LapDock is a combination of touch display, keyboard, touch-pad and battery. It can be used as an extension of various devices, like laptops, PCs, handhelds and smartphones. But primarily, and importantly (!), it is advertised to turn certain smartphones into laptops.

I haven't tried the connection with a smartphone yet, just with a laptop (running Debian Linux with KDE Plasma on Wayland), the Steam Deck, and the Steam Deck Dock. The experience is pretty much plug'n'play.

The screen looks good. The 10 finger touch are registered, which I checked via

$ libinput debug-gui

Turning the display 360° makes this device basically into a tablet. With maliit-keyboard and qtvirtualkeyboard-plugin I get a virtual keyboard when touch hitting input fields. I couldn't see any pressure sensitivity, so fancy drawing isn't directly possible, as far as I can see. But all in all, the touch works fine. Including long press for right click, double tap in YouTube for 10 second for- or backwards, scrolling, swiping in from the sides for special actions, like seeing the overview. Even HDR can be enabled and used with the Steam Deck, but of course, the 300 cd/m² won't be too much visible.

The LapDock can pass power to a connected device. The included 20W charger isn't enough for the Steam Deck. Using the 45W charger of the Steam Deck seems to work better and provide more juice, but the Deck was still losing more energy then it gained.

The keyboard is just available with one layout: US
Not the international one, so one key is missing. (For comparison with the German layout: it is the one labeled  <>|
Personally I don't mind this, as my usual need for those characters are in programming, where I switch to the English layouts either way.
The typing feels okay for now. I need more time with it to maybe find a few annoying things.
There are function keys available. The good thing: You need to press the Fn key to reach them, so you have access to the F1 to F12 keys normally. I am not sure, how I feel about the actual functions. You have your usual volume, brightness, media keys. But some are wired directly into the LapDock instead of into the system. So, instead of changing the volume or the brightness within my Linux system letting it handle those events, it directly changes the LapDock. This could be fine, but if I use a different audio output (which is highly likely), it won't be adjusted, neither another screens brightness. The audio part is annoying for me, the brightness part not. The touch-pad toggle is strangely both directly affecting the touch-pad, and also sending an event.
The media-keys send media-events, the ESC-key Meta-Tab.

The speakers… they remind me a bit of those speakers, that were inside PCs around 30 years ago. Those ones could play music with the right settings, e.g. pcspkr. Putting some Amiga, Atari, C64, SEGA, Nintendo… tunes on it, sound quite alright and enjoyable. And they can get quite loud. Don't forget to turn the volume up in the operating system AND on the LapDock. Listening to someone talk, is also okay. But "normal" music… as long as there are just mid and high tones, you might be okay with it. But everything lower and warmer is not available.
There is a headphone jack, which provides a simple way to get better audio out of another speaker or headphone.

I haven't tried the TF-card reader.
The HDMI in works, as does the USB-C in. And, of course, the USB-C power in.

But, finally, the most weird part is the touch-pad. It is AND is NOT a touch-pad. Under Linux it is registered as mouse with two buttons.
When you are do two finger swipes up and down, it will send wheel-up and wheel-down events (POINTER_SCROLL_WHEEL) like a mouse wheel (and also left and right) instead of POINTER_SCROLL_FINGER, which makes scrolling very unsmooth, tedious, choppy, annoying.
Certain areas and certain touches will even generate and send keyboard shortcuts. I found:

  • one finger swipe in from top: Left-Meta + Down-Arrow
  • one finger swipe in from left: Left-Meta + Tab
  • one finger swipe in from right: Left-Meta + A
  • one finger swipe in from bottom: Left-Meta + B
  • three finger tap: Left-Meta + S
  • three finger swipe down: Left-Meta + D 
  • three finger swipe up: Left-Meta + Tab
  • three finger swipe right: Left-Alt + Tab
  • three finger swipe left: Left-Shift + Left-Alt + Tab
  • four finger tap: Left-Meta + A

The one finger swipes are super annoying to me, as I continuously accidentally trigger those. I had to unbind the Left-Meta + Down-Arrow in the system (which was set to organize a window at the lower half of the screen). 
Middle click is also important to me. I found ydotool (instead of xdotool, because… wayland). The Debian provided version is old, so I had to either take the provided files, or compile it myself. Compiling directly provides a systemd-service file, which makes running the daemon a little easier.

$ git clone https://github.com/ReimuNotMoe/ydotool.git
$ cd ydotool
$ mkdir build
$ cd build
$ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
$ ninja
$ sudo ninja install
$ systemctl enable --user ydotool
$ systemctl start --user ydotool

Afterwards I could create a new command in the KDE Plasma Systemsettings Shortcuts 

ydotool click 0x42 0x82

and binding it to Meta + S (by just doing a three finger tap).
It doesn't react instantly, but still better, then not having it.

ydotool key 158:1 158:0
ydotool key 159:1 159:0

are two more shortcuts, that I bound to Meta + A and Meta + Tab to have the same backward and forward functionality in Firefox as it is by swiping with two fingers left and right. (The keycodes can be found, as ydotool says, under /usr/include/linux/input-event-codes.h) Somehow, the click on 5 and 6 didn't respond in the same way, that's why I used the keys instead here.

This feels better.
But there is this one thing: when typing, the touch-pad is turned off. This might be fine for some people, especially when continuously accidentally hitting it. But What about moving and dragging things and needing to hold Shift, Ctrl, Alt, Meta or any other key? Not possible. Prepare yourself to use the touchscreen in such cases. Or find another way without the need of the touch-pad.

The NexDock seems to do the same thing

 It seems to have to do with Android. Some third-party game-pads have toggles to switch between different modes, like Android, X-Input, Switch, …. It would be nice to have something similar here to switch to Android or Other (e.g. Linux).
And probably more interfaces, making it a more versatile hub (else you need to put a USB-hub before to add more USB-Devices, LAN, DisplayPort, …). Which would be handy for e.g. the Steam Deck and similar devices.
Android smartphones are currently just … annoying.
They are powerful and could replace many peoples laptop. This is, where this LapDock comes in very handy. But then you find out, that many devices don't have DisplayPort out. And those, that have, don't have to have a Desktop Mode. Because there is no working one build in… 

 Which basically just leaves custom desktop modes, which are provided by Samsung Dex and Motorola Ready For. (For gamers there is also Nubia Redmagic and Asus ROG with gaming modes. But not a real desktop.) (Huawei and Honor seem to also have a custom desktop mode - EMUI)
Android was released 15 years ago. And a lot of very different devices and companies are using it, developing for it. In comparison: Linux (released 1991) had KDE 3 after 11 years. How can there not be a normal desktop mode already. How can there be problems handling a track-pad. (Not even mentioning the lack of normal tools and programs, especially for a software developer. You can't just use your normal things like git, vscode, vim, … without having to install termux and proot to get an actual usable Linux environment. So much wasted potential.)

Let's see, what the future will bring.

For now, it is still rough and bumpy, and this seems to be a look into a future, for what can be, when things fall into place.

Finally, let's put some hardware information here:

Bus 001 Device 018: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x1a86 QinHeng Electronics
  idProduct          0x7523 CH340 serial converter
  bcdDevice            2.64
  iManufacturer           0
  iProduct                2 USB Serial
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0027
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1
      bInterfaceProtocol      2
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)

Bus 001 Device 017: ID 27c0:0819 Cadwell Laboratories, Inc. WingCoolTouch
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x27c0 Cadwell Laboratories, Inc.
  idProduct          0x0819
  bcdDevice            1.13
  iManufacturer           1 WingCoolTouch
  iProduct                2 WingCoolTouch
  iSerial                 3 9LQ0172005164
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0042
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              200mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     200
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode           33 US
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      38
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)

Bus 001 Device 016: ID 258a:8071 SINO WEALTH USB KEYBOARD
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x258a
  idProduct          0x8071
  bcdDevice            3.43
  iManufacturer           1 SINO WEALTH
  iProduct                2 USB KEYBOARD
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x003b
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     298
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)

                    *-usb:0
                         description: Keyboard
                         product: SINO WEALTH USB KEYBOARD Consumer Control
                         vendor: SINO WEALTH
                         physical id: 1
                         bus info: usb@1:3.1
                         logical name: input82
                         logical name: /dev/input/event12
                         logical name: input82::capslock
                         logical name: input82::numlock
                         logical name: input82::scrolllock
                         logical name: input83
                         logical name: /dev/input/event13
                         logical name: /dev/input/mouse2
                         logical name: input84
                         logical name: /dev/input/event14
                         logical name: input85
                         logical name: /dev/input/event15
                         logical name: input86
                         logical name: /dev/input/event16
                         version: 3.43
                         capabilities: usb-1.10 usb
                         configuration: driver=usbhid maxpower=100mA speed=1Mbit/s
                    *-usb:1
                         description: Human interface device
                         product: WingCoolTouch WingCoolTouch
                         vendor: WingCoolTouch
                         physical id: 2
                         bus info: usb@1:3.2
                         logical name: input87
                         logical name: /dev/input/event17
                         logical name: /dev/input/mouse3
                         version: 1.13
                         serial: 9LQ0172005164
                         capabilities: usb-1.10 usb
                         configuration: driver=usbhid maxpower=200mA speed=12Mbit/s
                    *-usb:2
                         description: Generic USB device
                         product: USB Serial
                         vendor: QinHeng Electronics
                         physical id: 3
                         bus info: usb@1:3.3
                         version: 2.64
                         capabilities: usb-1.10
                         configuration: driver=ch341 maxpower=98mA speed=12Mbit/s


/dev/input/event12:     SINO WEALTH USB KEYBOARD
/dev/input/event13:     SINO WEALTH USB KEYBOARD Mouse
/dev/input/event14:     SINO WEALTH USB KEYBOARD System Control
/dev/input/event15:     SINO WEALTH USB KEYBOARD Wireless Radio Control
/dev/input/event16:     SINO WEALTH USB KEYBOARD Consumer Control
/dev/input/event17:     WingCoolTouch WingCoolTouch

 

-event12  DEVICE_ADDED            SINO WEALTH USB KEYBOARD          seat0 default group5  cap:k
-event13  DEVICE_ADDED            SINO WEALTH USB KEYBOARD Mouse    seat0 default group5  cap:p left scroll-nat scroll-button
-event14  DEVICE_ADDED            SINO WEALTH USB KEYBOARD System Control seat0 default group5  cap:k
-event15  DEVICE_ADDED            SINO WEALTH USB KEYBOARD Wireless Radio Control seat0 default group5  cap:k
-event16  DEVICE_ADDED            SINO WEALTH USB KEYBOARD Consumer Control seat0 default group5  cap:k
-event17  DEVICE_ADDED            WingCoolTouch WingCoolTouch       seat0 default group6  cap:t  size 216x91mm ntouches 10 calib

Device:           SINO WEALTH USB KEYBOARD
Kernel:           /dev/input/event12
Group:            5
Seat:             seat0, default
Capabilities:     keyboard
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles:   n/a
Rotation:         0.0

Device:           SINO WEALTH USB KEYBOARD Mouse
Kernel:           /dev/input/event13
Group:            5
Seat:             seat0, default
Capabilities:     pointer
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   button
Click methods:    none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles:   flat *adaptive custom
Rotation:         0.0

Device:           SINO WEALTH USB KEYBOARD System Control
Kernel:           /dev/input/event14
Group:            5
Seat:             seat0, default
Capabilities:     keyboard
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles:   n/a
Rotation:         0.0

Device:           SINO WEALTH USB KEYBOARD Wireless Radio Control
Kernel:           /dev/input/event15
Group:            5
Seat:             seat0, default
Capabilities:     keyboard
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles:   n/a
Rotation:         0.0

Device:           SINO WEALTH USB KEYBOARD Consumer Control
Kernel:           /dev/input/event16
Group:            5
Seat:             seat0, default
Capabilities:     keyboard
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      n/a
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles:   n/a
Rotation:         0.0

Device:           WingCoolTouch WingCoolTouch
Kernel:           /dev/input/event17
Group:            6
Seat:             seat0, default
Size:             216x91mm
Capabilities:     touch
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      identity matrix
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles:   n/a
Rotation:         0.0

2 Kommentare:

  1. The Changingtouch monitor is also an excellent portable monitor and very cost-effective! It’s a lapdock that looks like a laptop, equipped with a keyboard and touchpad, and is also suitable for gaming and graphic design programs, with particularly good compatibility! Full metal body, lightweight design, suitable for any scenario! Limited time offer of $200!
    https://store.changingtouch.com/products/x14-lite

    AntwortenLöschen
    Antworten
    1. Interesting. But it looks very much the same.
      Do you know, if it has the same problem with the touchpad (being on-device emulated as mouse)?

      Löschen

[Review/Critic] UDock X - 13,3" LapDock

The UDock X - 13.3" LapDock is a combination of touch display, keyboard, touch-pad and battery. It can be used as an extension of vari...