Lenovo IdeaPad Duet 3 (google-wormdingler)
This device is supported as part of a generic port. Refer to Google Trogdor Chromebook (google-trogdor) for installation instructions and more information. |
Duet 3 running postmarketOS with the GNOME interface | |
Manufacturer | Lenovo |
---|---|
Name | IdeaPad Duet 3 |
Codename | google-wormdingler |
Released | 2021 |
Type | detachable |
Hardware | |
Chipset | Qualcomm Snapdragon 7c Gen 2 (SC7180P) |
CPU | 2x Kryo 468 Gold + 6x Kryo 468 Silver |
GPU | Adreno 618 |
Display | 2000x1200 IPS |
Storage | 64/128 GB |
Memory | 4/8 GB |
Architecture | aarch64 |
Software | |
Original software | ChromeOS |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | yes |
Generic port | Google Trogdor Chromebook (google-trogdor) |
USB Networking |
Works |
---|---|
Internal storage |
Works |
SD card | |
Battery |
Works |
Screen |
Works |
Touchscreen |
Works |
Keyboard |
Works |
Touchpad |
Works |
Stylus |
Works |
Multimedia | |
3D Acceleration |
Works |
Audio |
Works |
Camera |
Broken |
Connectivity | |
WiFi |
Works |
Bluetooth |
Works |
Miscellaneous | |
FDE |
Works |
USB OTG |
Works |
HDMI/DP |
Works |
Sensors | |
Accelerometer |
Works |
Hall Effect |
Works |
Users owning this device
- Connorplayer123 (Notes: Using pmOS with GNOME, 8GB RAM, 128GB eMMC, and its my daily driver!)
- Diogotavc (Notes: 8+128 variant imported from the UK, running pmos w/gnome-shell)
- Geofferey (Notes: Testing device port)
- Jasedxyz (Notes: Running pmOS)
Audio
Audio defaults to a non-existent headset due to mismatched alsa UCM configs. You can simply switch to the speakers and ignore the headset, as this does not break functionality.
Screen Rotation
Screen rotation works via accelerometer but is stuck +/- 90 degrees.
You might be able to offset it, by creating an udev rule (/etc/udev/rules.d/61-cros-ec-accel.rules
).
To get it working properly, you have to swap the x and y values, as well as inverting the x-axis:
Create the following file:
# nano /etc/udev/rules.d/61-cros-ec-accel.rules
Insert the following text:
ACTION=="remove", GOTO="sensor_end"
SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="platform",
ATTRS{modalias}=="platform:cros-ec-accel",
ENV{ACCEL_MOUNT_MATRIX}="0, 1, 0; -1, 0, 0; 0, 0, -1",
GOTO="sensor_end"
LABEL="sensor_end"
Touchpad
The touchpad requires a large amount of pressure in order to detect cursor movement. To increase its sensitivity, you can add the following libinput quirk:
Create the following file:
# mkdir /etc/libinput
# nano /etc/libinput/local-overrides.quirks
Insert the following text:
[Touchpad pressure override]
MatchUdevType=touchpad
MatchName=Google Inc. Hammer
AttrPressureRange=20:10
Stylus
The cursor position is correctly displayed only in portrait orientation. To make the USI-pen work correctly in any orientation, do the following (source):
Create the following file:
# mkdir /etc/libwacom
# nano /etc/libwacom/google-wormdingler.tablet
Insert the following text:
[Device]
Name=hid-over-i2c 0603:604A Stylus
ModelName=
DeviceMatch=i2c:0603:604a
Class=ISDV4
Width=5.35433
Height=8.54331
IntegratedIn=Display;System
Styli=@generic-no-eraser
[Features]
Stylus=true
Touch=false
And also supplement or create a file:
# nano /etc/libinput/local-overrides.quirks
[Google Chromebook Wormdingler Stylus Digitizer]
MatchUdevType=tablet
MatchDeviceTree=*wormdingler*
MatchBus=i2c
ModelChromebook=1
AttrPressureRange=1100:1000
Small note: The stylus can feel a bit unresponsive, and the palm rejection pretty bad. For that, feel free to tweak or remove values to your liking, as follows:
[Google Chromebook Wormdingler Touch Digitizer]
MatchName=hid-over-i2c 0603:604A
AttrPalmSizeThreshold=14
[Google Chromebook Wormdingler Stylus Digitizer]
MatchUdevType=tablet
MatchDeviceTree=*wormdingler*
MatchBus=i2c
ModelChromebook=1
AttrTabletSmoothing=0
After all this is done, execute this and reboot:
# libwacom-update-db
After that, the digitizer should take into account the screen rotation, and also, the digitizer settings menu will appear in the Gnome settings. Other USI styli may not work (remembering that USI 1.0 pens are completely unsupported for this model due to the in-cell display technology).
Bluetooth
Bluetooth seems to work well overall. Gamepads, earbuds and phone connections seem to work out of the box without issues. However:
Some devices such as gamepads do not work out of box with the default kernel Bluetooth configuration. Required inlining of rfkill + core Bluetooth features instead of modules, even with modules loaded gamepad did not work.
For Bluetooth keyboard and mice to work you must manually load the uhid kernel module via modprobe/insmod or add it to the /etc/modules
file.
Keyboard
If you're unhappy with the current keyboard layout or need a special key, you can disable the cros-keyboard-map service (as it overrides the configuration on each boot) and manually edit the keyd configuration file:
# rc-update del cros-keyboard-map boot
# nano /etc/keyd/default.conf
The configuration file is very readable and easy to digest, although you may want to use keyd monitor
and keyd list-keys
to facilitate the process. Note that you may have to stop and start the keyd service manually for changes to take effect without a reboot.
An example of a keyd configuration file for the Duet 3:
[ids]
k:0000:0000
k:0001:0001
k:18d1:503c
k:18d1:5050
k:18d1:504c
k:18d1:5052
k:18d1:5057
k:18d1:505b
k:18d1:5030
k:18d1:503d
k:18d1:5044
k:18d1:5061
k:18d1:592b
[main]
back = back
refresh = forward
zoom = f11
scale = scale
brightnessdown = brightnessdown
brightnessup = brightnessup
micmute = micmute
mute = mute
volumedown = volumedown
volumeup = volumeup
sleep = delete
backspace = backspace
[meta]
back = f1
refresh = f2
zoom = f3
scale = f4
brightnessdown = f5
brightnessup = f6
micmute = f7
mute = f8
volumedown = f9
volumeup = f10
sleep = f12
[alt]
up = pageup
down = pagedown
left = home
right = end
leftmeta = capslock
[control]
scale = print
[control+alt]
sleep = C-A-delete
back = C-A-f1
refresh = C-A-f2
zoom = C-A-f3
scale = C-A-f4
brightnessdown = C-A-f5
brightnessup = C-A-f6
micmute = C-A-f7
mute = C-A-f8
volumedown = C-A-f9
volumeup = C-A-f10
Desktop Environment-specific tweaks
GNOME
In the latest versions of gnome-shell, you can set screen scaling values to multiples of 25% by enabling experimental fractional scaling support:
$ gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
Phosh
Change screen scaling
If you don't want to set the screen orientation and the scale new, after every reboot:
# nano /usr/share/phosh/phoc.ini
Insert the following text:
[output:DSI-1]
rotate = 270
scale = 1.5
Reboot.
Allow free-form windows when undocked
When the keyboard is connected, you can switch between "Docked" and "Undocked" from the quick settings. When you disconnect the keyboard, phosh automatically transitions into "Undocked" mode, automatically maximizing all of your windows. To allow free form windows, you can run the following command:
$ gsettings set sm.puri.phoc auto-maximize false
Revert to true to switch back to auto-maximized windows.
Disable pbsplash
The pbsplash works in portrait mode during boot, regardless of the actual orientation of the device. If you are confused by this, you can switch to the option of showing the boot log, which happens in landscape mode (source):
# nano /etc/deviceinfo
Edit the appropriate line, preserving your parameters if they exist:
deviceinfo_kernel_cmdline_append=" PMOS_NOSPLASH console=tty1"
And rebuild the boot kernel image:
# mkinitfs