Debian Linux on Chuwi Hi10 X

TL;DR: Hardware-wise, everything works nicely apart from the accelerometer (fixed, see below). GNOME turned out to be the most touch-friendly desktop environment. Installation process was annoying. A few UI papercuts, but nothing major.

Introduction

I bought the Chuwi Hi10 X tablet the other day. It’s a nice affordable tablet with a detachable keyboard. Feeling-wise, it feels sturdy enough. I booted Windows exactly once, to make sure all peripherals work, in case I had to return it. After that was done, I decided to go install Linux on it.

My only complaint about the hardware is that the charger has a USB-C interface but doesn’t charge my phone. It has two USB-C ports on the device and two USB-A ports on the keyboard, which is already more ports than most modern laptops. I love this.

Installation

So, I downloaded the Debian testing installer, the version enhanced with non-free firmware, and started it.

First problem: everything was rotated. I had the tablet docked into the keyboard, looking at it in landscape mode. Everything in the installer was in portrait mode, and I couldn’t find a way to rotate it. That’s annoying, for sure, but I could put up with it until the end of the installation.

Second problem: The WiFi card worked too unreliably to be able to connect to my network. Fortunately I had a USB to Ethernet adaptor lying next to me.

Third problem: The touch screen didn’t work, so I had to make do with tilting my head to look at the screen and using the touchpad for clicks. I ended up forgetting about the mouse and using only the keyboard.

Fortunately, the second and third problem disappeared after I booted into my installed system, and all desktop environments allow you to rotate the screen. EDIT: I realised that the accelerometer works with the mxc4005 kernel module, which isn’t built by default on Debian. Should work out of the box on Ubuntu, but I also reported a Debian bug for it to be built next time.

Desktop environments: LxQt

My first choice was LxQt – I wanted something lightweight.

The first thing I noticed was that, I could rotate the screen, but the touchscreen input wasn’t rotated accordingly. I worked around it by modifying the udev trick found here and adding it to my Autostart so it would automatically rotate the screen on each login.

Next thing: It’s time to get rid of my temporary cable connection and see if the WiFi works. There was no front-end for that. Most on-line tutorials will tell you to just install wicd, which I wouldn’t have really minded if it wasn’t unavailable in testing or unstable. At the end I solved this by manually installing nm-tray on top. I did report a Debian bug to make nm-tray a dependency of the metapackage.

My next target was to lock the device using the power button (Android much?). No such luck. LxQt instantly shuts down the device when the power button is pressed, no confirmation, no way to override this. I tried many things and couldn’t get it to work. This post suggests using some GNOME tricks, but I didn’t even have the GNOME dependencies installed at the time.

I then installed an on-screen keyboard (Florence). It worked well enough, but… not on the screen saver. XScreensaver didn’t seem to support using an on-screen keyboard, so I had no way to unlock my tablet without the physical keyboard.

At this point, I was pretty much done with LxQt and tried XFCE instead.

Desktop environments: XFCE

First, the power button. It doesn’t instantly shut down the tablet, at least. It doesn’t do anything useful either. It’s mapped to doing exactly nothing. This is an improvement, in the sense that an accidental press of the button is harmless, but still not exactly what I needed.

Next, the on-screen keyboard on the screensaver. I somehow ended up using XScreensaver again, which apparently shouldn’t be the case – apparently XFCE has its own screensaver with support for on-screen keyboards? But I only found out about this when it was too late.

Another major annoyance with XFCE is that you can’t even navigate a menu, such as the start menu, with the touchscreen. In order to go to a submenu, you have to keep your finger over the menu item. The moment you let go of your finger, the submenu disappears. That makes it impossible to select anything on the submenu.

I decided to not bother with XFCE anymore and went to my usual preferred desktop environment, KDE.

Desktop environments: KDE

Ahh, a breath of fresh air! I saw a screenshot of its on-screen keyboard on the lock screen before I installed it. I then proceeded to remap the power button to “Lock screen”. This is wonderful.

However… how do we actually enable the on-screen keyboard? I went through a couple of options, didn’t find it, asked the internet… and found out that Wayland has what I believe to be a killer feature: Keyboard auto pop-up!

However, Wayland support for KDE is still unfinished, so finally I decided to switch to GNOME.

Desktop environments: GNOME (the winner!)

I installed GNOME and it brought Wayland with it. I was impressed to see how touch-optimised everything was. The on-screen keyboard worked nicely, out of the box, including on the lock screen. All buttons were big enough for me to not need to aim like a hawk. Wonderful!

Now, Wayland meant that I couldn’t bring my screen rotation script. I went to GNOME’s settings, rotated the screen, and that worked quite nicely. It even remembered this setting when logging out and back in … but not for the touchscreen. It registers my touches at the rotated coordinates after logging back in, so after each login I have to rotate the screen to Portrait and back to Landscape. This is the biggest issue that I have with GNOME, but it still feels better than the other desktop environments overall. EDIT: It’s already fixed in git, thanks a lot garnacho! It’s also not an issue with the accelerometer module enabled.

Next thing to try: The Power Button. I could remap it, but didn’t find the option to lock the screen there. I clicked the next best thing, which was “Do nothing”. I then went to Keyboard Shortcuts and tried remapping the power button to “Lock screen”. This only works intermittently, but at least I have an easily accessible option to lock the screen without it. I think it has something to do with some tablet auto-detection code, which turns out to be flimsy, and the button defaulting to lock the screen on tablets. In any case, that’s another papercut that needs fixing. I had a short chat with some nice folks on #gnome-hackers about it, it looks like they are aware that their tablet detection code needs to be worked on, so I didn’t annoy them further.

I then was happy enough to start adding input methods. I set up the system in Greek, because it comes with stuff like keyboard input and timezone. I went to add Japanese input. GNOME comes with ibus integrated, so I just have to install and enable ibus-mozc, right?… Wrong. Somehow it ended up detecting Greek input instead of romaji, and then it couldn’t be converted to hiragana because.. it’s Greek. The only way around it was to switch my system back to English, which I meant to do since the beginning, and remove the Greek input from the keyboard. Hmm, still not good enough. I tried anthy instead of mozc, which is clearly inferior, but at least it worked. I then tried reporting the bug, so I brought back mozc to test it and… it works?… WAT. ¯\_(ツ)_/¯ First law of engineering says “if it works, don’t touch it”. I could theoretically set up another system and try it there, but that would take too much time and I’m not sure I have enough right now.

I also couldn’t find any on-screen keyboards that support Japanese. As of now, if I want to type in Japanese, I need to either have the external keyboard plugged in, or go to one of those online input systems. I tried inputting Japanese again now, using mozc romaji input and the on-screen keyboard, and that worked fine. Hiragana input would have been more convenient but it was showing the wrong labels, so I reported it.

Lastly, Firefox has to be started with env MOZ_USE_XINPUT2=1 in order for touch-based scrolling to work. I modified the firefox.desktop file and added a launcher in /usr/local/bin.

Conclusions

The tablet itself is wonderful. Linux, on the other hand, isn’t quite ready for touch-based devices yet. GNOME seemed to have some optimisations in place, but several papercuts need to be worked on. KDE also worked decently in the short time that I tried it, but it really needs Wayland support in this regard. The respective teams are actively working on these issues in both desktop environments, so I’m optimistic for the future. XFCE and LxQt, in the other hand, are still barely usable with a touch screen, so I wouldn’t recommend them yet.

6 Comments

  1. Hello Vivia,
    I did it as well and succeeded in nearly all ways – thank You for Your blog.
    One thing I could not manage was the correct touchscreen when having changed to portrait mode. I put Your mentioned udev rule where it should be, but that changed nothing.
    Where did You place the firmware under which name? (I have no /usr/lib/firmware directory, only /lib/firmware and no silead folder there. And did You do anything else?
    Cheers
    Peter

    1. u ppl shd go chuwi forum for hi10x su b forum. we are a community, solve problems tgt

  2. hi, go chuwi forum and see the hi10x sub-forum. there is pd to 12v2a “trigger” as we called it in china.

    i can easily use my pd powerbank/plug to charge hi10x without any problem. its not new thing.

  3. I have the Chuwi Hi10 X and found that KDE Neon works pretty good. I do not have autorotate working yet, but can long press the desktop and flip to landscape easily in the display config. Anyhow, thank you for your tests!

  4. It is no surprice to me wayland works better. I refuse old linux I want the new with wayland, system D, Pipewire etc. So GNOME and Plasma works well with Wayland. So what about E25: 4 and wlroots based compositors? Full wayland? Pipewire?

  5. Hi!
    Also got my hands on that tablet and also installed debian testing on it.
    May i suggest you trying Phosh instead of Gnome? (basically the same stuff, but more polished imo)

Leave a Reply to Alex Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.