Problem 1: the touchpad doesn't work out of the box

The i2c-hid kernel module expects the touchpad to raise an interrupt after a reset. This one doesn't — so the driver times out with failed to reset device errors in dmesg, and the touchpad is dead.

The fix is a small kernel-level workaround that Manjaro packages as mhwd-i2c-syna3602. It reloads the i2c-hid driver with the right quirks after boot.

Install on Manjaro / Arch

sudo pacman -S base-devel
git clone https://gitlab.manjaro.org/packages/community/mhwd-i2c-syna3602.git
cd mhwd-i2c-syna3602
makepkg -si
sudo reboot

On other distros

Read the package's .install script (30 lines of shell) and write the equivalent as a systemd service that runs on boot. In essence: unload i2c-hid, wait a second, reload it with the quirk flag set.

Problem 2: sometimes the touchpad is locked out by firmware

On some units the touchpad (and the touchscreen!) refuses to come up no matter what the kernel does. The apparent cause is an initialization-order bug where Linux either puts the controller into an inconsistent power state at boot, or the firmware latches it into one after an ungraceful shutdown. Shutting down cleanly from Windows seems to reset the state; shutting down from Linux often doesn't.

The only reliable recovery I've found:

  1. Boot a Windows 10 or 11 installer USB (create with Rufus).
  2. Install the vendor's driver pack so Windows actually drives the touchpad/touchscreen normally.
  3. Fully shut down from Windows (not restart — Windows "Restart" does something different from "Shut down").
  4. Boot back into Linux. Touchpad and touchscreen come up.

Yes, this is ridiculous. It's also the only thing that works on some units. Take a backup image of the Linux install once it's working (dd if=/dev/sda of=backup.img bs=4M status=progress from a live USB) because a bad shutdown can put you back at square one.

Disable driver auto-update in Windows

If you do the Windows round-trip, stop Windows Update from replacing the vendor driver you just installed. gpedit.mscComputer Configuration → Administrative Templates → Windows Components → Windows Update → Do not include drivers with Windows Updates. Enable. Otherwise Windows will happily replace the working driver with a generic one and put you back in the same state.

Problem 3: the screen rotates the wrong way

When you fold the PhilBook into tablet mode and rotate it, GNOME reads the accelerometer, applies the default rotation matrix, and rotates the screen… the wrong way. The accelerometer in this machine has its axes swapped relative to the upstream default.

Two ways to fix it: a udev hwdb drop-in (see my Fix Ubuntu auto-rotation note), or rebuilding GuLinux's ScreenRotator with a patched orientation matrix:

sudo pacman -S iio-sensor-proxy base-devel qt5-declarative qtcreator qt5-sensors cmake git clang

git clone https://github.com/GuLinux/ScreenRotator
cd ScreenRotator

The default matrix in src/orientationsensor.cpp is:

d->to_orientation = {
    { QOrientationReading::TopUp,    TopUp    },
    { QOrientationReading::TopDown,  TopDown  },
    { QOrientationReading::RightUp,  RightUp  },
    { QOrientationReading::LeftUp,   LeftUp   },
};

Change it to:

d->to_orientation = {
    { QOrientationReading::TopUp,    RightUp },
    { QOrientationReading::TopDown,  LeftUp  },
    { QOrientationReading::RightUp,  TopUp   },
    { QOrientationReading::LeftUp,   TopDown },
};

Then:

mkdir build && cd build
cmake ..
make all
sudo make install
/usr/local/bin/screenrotator &

Add to your session autostart so it runs at login.

The general lesson

Cheap hardware on Linux is usually a series of small firmware assumptions that don't match upstream defaults. The first time you work through it is painful; the second time is a checklist. Keep notes on every fix you make — I've had the exact same i2c-hid problem on a completely different tablet SKU two years later, and the fix I'd written down was still right.