Jump to content

Lenovo IdeaPad Duet Chromebook (google-krane): Difference between revisions

From postmarketOS Wiki
TheSame (talk | contribs)
m fix the MR for HDMI out
 
(10 intermediate revisions by 7 users not shown)
Line 17: Line 17:
| memory = 4 GB LPDDR4X
| memory = 4 GB LPDDR4X
| architecture = aarch64
| architecture = aarch64
| type = Tablet
| type = detachable
| whet_dhry = 4375.6
| whet_dhry = 4375.6
<!-- Features -->
<!-- Features -->
Line 23: Line 23:
| status_flashing = -
| status_flashing = -
| status_touch = Y
| status_touch = Y
| status_screen = P
| status_screen = Y
| status_wifi = Y
| status_wifi = Y
| status_fde = P
| status_fde = Y
| status_mainline = Y
| status_mainline = Y
| status_battery = Y
| status_battery = Y
Line 40: Line 40:
<!-- Sensors -->
<!-- Sensors -->
| status_accel = Y
| status_accel = Y
| status_magnet = -
| status_magnet = Y
| status_light = Y
| status_light = Y
| status_proximity = -
| status_proximity = -
Line 51: Line 51:
| status_touchpad = Y
| status_touchpad = Y
| status_usba = -
| status_usba = -
| status_hdmidp = N
| status_hdmidp = Y
| status_stylus = Y
| status_stylus = Y
| status_irtx = -
| status_irtx = -
Line 60: Line 60:
| status_fossbootloader = -
| status_fossbootloader = -
| status_emmc = Y
| status_emmc = Y
| status_sdcard = - <!-- does it have sd card? -->
| status_sdcard = -
| status_dvb = -
| status_dvb = -
<!-- Not visible -->
<!-- Not visible -->
Line 78: Line 78:


Create the following file:
Create the following file:
<source lang="shell-session">
<syntaxhighlight lang="shell-session">
# sudo nano /etc/udev/rules.d/61-cros-ec-accel.rules
# nano /etc/udev/rules.d/61-cros-ec-accel.rules
</source>
</syntaxhighlight>


Insert the following text:
Insert the following text:
<source lang="shell">
<syntaxhighlight lang="text">
ACTION=="remove", GOTO="sensor_end"
ACTION=="remove", GOTO="sensor_end"
   
   
Line 92: Line 92:


LABEL="sensor_end"
LABEL="sensor_end"
</source>
</syntaxhighlight>
 
 
=== HDMI out ===
HDMI out is being tested with {{MR|6358|pmaports}} and an USB-C to HDMI adapter as many USB-C dock devices offer is required.
 
One thing to note about external display is the SoC's display bandwidth is limited, so the highest display mode supported is 1080p@30. Most displays do not support 30Hz, so the resolution will be limited instead.
 
 


== Touchpad ==
== Touchpad ==
Line 99: Line 107:


Create the following file:
Create the following file:
<source lang="shell-session">
<syntaxhighlight lang="shell-session">
# sudo mkdir /etc/libinput
# mkdir /etc/libinput
# cd /etc/libinput/
# cd /etc/libinput/
# sudo nano local-overrides.quirks
# nano local-overrides.quirks
</source>
</syntaxhighlight>


Insert the following text:
Insert the following text:
<source lang="ini">
<syntaxhighlight lang="ini">
[Touchpad pressure override]
[Touchpad pressure override]
MatchUdevType=touchpad
MatchUdevType=touchpad
MatchName=Google Inc. Hammer
MatchName=Google Inc. Hammer
AttrPressureRange=20:10
AttrPressureRange=20:10
</source>
</syntaxhighlight>
 
== Cameras ==
 
Cameras are currently non-functional, due to lack of MTK DIP driver in mainline.
 
They do get detected with few devicetree patches (along with lens actuator and EEPROMs), but patch from MediaTek hasn't been merged, as they couldn't agree on creating DMA buffers.
 
Getting it to work would require significant effort, as it would have to be re-written accordingly to current kernel ABI.
 
https://lwn.net/ml/linux-media/7f8cb8c7-cbf2-40c9-ac8f-c3c9b97919d7@molgen.mpg.de/
 


== USI-pen ==
== USI-pen ==
Line 120: Line 139:


Create the following file:
Create the following file:
<source lang="shell-session">
<syntaxhighlight lang="shell-session">
# sudo nano /etc/libwacom/google-krane.tablet
# mkdir /etc/libwacom
</source>
# nano /etc/libwacom/google-krane.tablet
</syntaxhighlight>


Insert the following text:
Insert the following text:
<source lang="ini">
<syntaxhighlight lang="ini">
[Device]
[Device]
Name=hid-over-i2c 27C6:0E30 Stylus
Name=hid-over-i2c 27C6:0E30 Stylus
Line 139: Line 159:
Stylus=true
Stylus=true
Touch=false
Touch=false
</source>
</syntaxhighlight>


And also supplement or create a file:
And also supplement or create a file:
<source lang="shell-session">
<syntaxhighlight lang="shell-session">
# sudo nano /etc/libinput/local-overrides.quirks
# nano /etc/libinput/local-overrides.quirks
</source>
</syntaxhighlight>


<source lang="ini">
<syntaxhighlight lang="ini">
[Google Chromebook Krane Stylus Digitizer]
[Google Chromebook Krane Stylus Digitizer]
MatchUdevType=tablet
MatchUdevType=tablet
Line 153: Line 173:
ModelChromebook=1
ModelChromebook=1
AttrPressureRange=1100:1000
AttrPressureRange=1100:1000
</source>
</syntaxhighlight>


After all this is done, execute this and reboot:
After all this is done, execute this and reboot:
<source lang="shell-session">
<syntaxhighlight lang="shell-session">
# sudo libwacom-update-db
# libwacom-update-db
</source>
</syntaxhighlight>


After that, the digitizer should take into account the screen rotation, and also, the digitizer settings menu will appear in the Gnome settings.
After that, the digitizer should take into account the screen rotation, and also, the digitizer settings menu will appear in the Gnome settings.
Line 167: Line 187:


If you don't want to set the screen orientation and the scale new, after every reboot:
If you don't want to set the screen orientation and the scale new, after every reboot:
<source lang="shell-session">
<syntaxhighlight lang="shell-session">
# sudo -i
# cd /usr/share/phosh/
# cd /usr/share/phosh/
# nano phoc.ini
# nano phoc.ini
</source>
</syntaxhighlight>


Insert the following text:
Insert the following text:
<source lang="ini">
<syntaxhighlight lang="ini">
[output:DSI-1]
[output:DSI-1]
rotate = 270
rotate = 270
scale = 1.5
scale = 1.5


</source>
</syntaxhighlight>


Reboot.
Reboot.
Line 187: Line 206:
In the latest versions of Gnome there is no option to select other display scales than 100% and 200%. You can enable intermediate options that are multiples of 25%, do so:
In the latest versions of Gnome there is no option to select other display scales than 100% and 200%. You can enable intermediate options that are multiples of 25%, do so:


<source lang="shell-session">
<syntaxhighlight lang="shell-session">
$ gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
$ gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
</source>
</syntaxhighlight>
 
=== pbsplash at boot ===
 
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 ([https://gitlab.postmarketos.org/postmarketOS/pmaports/-/issues/2239#note_1644222158 source]):
<syntaxhighlight lang="shell-session">
# nano /etc/deviceinfo
</syntaxhighlight>
 
Edit the appropriate line, preserving your parameters if they exist:
<syntaxhighlight lang="ini">
deviceinfo_kernel_cmdline_append=" PMOS_NOSPLASH console=tty1"
</syntaxhighlight>
 
And rebuild the boot kernel image:
<syntaxhighlight lang="shell-session">
# mkinitfs
</syntaxhighlight>
 
== Desktop Environment ==
 
=== Phosh ===
 
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:
<syntaxhighlight lang="shell-session">
$ gsettings set sm.puri.phoc auto-maximize false
</syntaxhighlight>
To switch back to auto-maximized windows run:
<syntaxhighlight lang="shell-session">
$ gsettings set sm.puri.phoc auto-maximize true
</syntaxhighlight>


== See also ==
== See also ==

Latest revision as of 13:19, 29 March 2025

Note This device is supported as part of a generic port. Refer to Google Kukui Chromebook (google-kukui) for installation instructions and more information.
Lenovo IdeaPad Duet Chromebook
Lenovo IdeaPad Duet Chromebook running postmarketOS
Lenovo IdeaPad Duet Chromebook running postmarketOS
Manufacturer Lenovo
Name IdeaPad Duet Chromebook
Codename google-krane
Released 2020
Type detachable
Hardware
Chipset MediaTek MT8183
CPU 4x 2.0 GHz ARM Cortex-A73, 4x 2.0 GHz ARM Cortex-A53
GPU ARM Mali-G72 MP3 (Bifrost) @ 800 MHz
Display 1920x1200 (16:10) IPS, 224 PPI
Storage 64/128 GB eMMC
Memory 4 GB LPDDR4X
Architecture aarch64
Software
Original software ChromeOS
Original version ? (Linux 5.10)
postmarketOS
Category community
Pre-built images yes
Unixbench Whet/Dhry score 4375.6
Generic port Google Kukui Chromebook (google-kukui)
Features
Internal storage
Works
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
SATA/eSATA
No data
USB OTG
Works
HDMI/DP
Works
Sensors
Accelerometer
Works
Magnetometer
Works
Ambient Light
Works


Users owning this device

  • AlleM43 (Notes: Intermittent work on getting mainline Coreboot running)
  • Bonfire
  • Comcloudway (Notes: SKU176, 64GB eMMC)
  • Deathmist (Notes: SKU176, 128 GB eMMC, fake digitizer w/ 1 touchpoint max)
  • EspiDev (Notes: SKU0, 64 GB eMMC, Plasma Mobile)
  • Fann (Notes: CT-X636F 4/128 - GNOME, battery life is on par with ChromeOS, KDE and GNOME are laggy, phosh not)
  • JulianGro (Notes: Plasma Mobile, main device used for school, USI-pen)
  • JustinSUF (Notes: SKU176, 128 GB eMMC)
  • KenOokamiHoro
  • LongnoseRob (Notes: 1x 64G & 1x 128G model, pmOS (edge), UI: gnome)
  • Medusa (Notes: Borrowed from one of our contributors, working on u-boot/mainline)
  • Neko (Notes: Running Ultramarine with KDE)
  • Pomoke (Notes: 64GB eMMC)
  • WeirdTreeThing (Notes: SKU176, 128GB eMMC, no keyboard.)


Screen

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"


HDMI out

HDMI out is being tested with pmaports!6358 and an USB-C to HDMI adapter as many USB-C dock devices offer is required.

One thing to note about external display is the SoC's display bandwidth is limited, so the highest display mode supported is 1080p@30. Most displays do not support 30Hz, so the resolution will be limited instead.


Touchpad

The touchpad may require 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
# cd /etc/libinput/
# nano local-overrides.quirks

Insert the following text:

[Touchpad pressure override]
MatchUdevType=touchpad
MatchName=Google Inc. Hammer
AttrPressureRange=20:10

Cameras

Cameras are currently non-functional, due to lack of MTK DIP driver in mainline.

They do get detected with few devicetree patches (along with lens actuator and EEPROMs), but patch from MediaTek hasn't been merged, as they couldn't agree on creating DMA buffers.

Getting it to work would require significant effort, as it would have to be re-written accordingly to current kernel ABI.

https://lwn.net/ml/linux-media/7f8cb8c7-cbf2-40c9-ac8f-c3c9b97919d7@molgen.mpg.de/


USI-pen

Gnome

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-krane.tablet

Insert the following text:

[Device]
Name=hid-over-i2c 27C6:0E30 Stylus
ModelName=
DeviceMatch=i2c:27c6:0e30
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 Krane Stylus Digitizer]
MatchUdevType=tablet
MatchDeviceTree=*krane*
MatchBus=i2c
ModelChromebook=1
AttrPressureRange=1100:1000

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.

Screen tweaks

Phosh

If you don't want to set the screen orientation and the scale new, after every reboot:

# cd /usr/share/phosh/
# nano phoc.ini

Insert the following text:

[output:DSI-1]
rotate = 270
scale = 1.5

Reboot.

Gnome

In the latest versions of Gnome there is no option to select other display scales than 100% and 200%. You can enable intermediate options that are multiples of 25%, do so:

$ gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

pbsplash at boot

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

Desktop Environment

Phosh

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

To switch back to auto-maximized windows run:

$ gsettings set sm.puri.phoc auto-maximize true

See also