Lenovo ThinkSmart View (lenovo-cd-18781y): Difference between revisions
Fix panel model numbers, add note on upstream patch. |
device is now in the community repo |
||
(10 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
| originalsoftware = Android | | originalsoftware = Android | ||
| originalversion = 8.1 | | originalversion = 8.1 | ||
| pmoskernel = 6. | | pmoskernel = 6.12 | ||
| chipset = Qualcomm APQ8053 | | chipset = Qualcomm APQ8053 | ||
| cpu = 1.8 GHz Cortex-A53 | | cpu = 1.8 GHz Cortex-A53 | ||
Line 24: | Line 24: | ||
| status_usbnet = Y | | status_usbnet = Y | ||
| status_flashing = N | | status_flashing = N | ||
| status_touch = | | status_touch = Y | ||
| status_screen = Y | | status_screen = Y | ||
| status_3d = Y | | status_3d = Y | ||
Line 32: | Line 32: | ||
| status_mainline = Y | | status_mainline = Y | ||
| status_battery = - | | status_battery = - | ||
| status_audio = | | status_audio = Y | ||
| status_bluetooth = P | | status_bluetooth = P | ||
| status_camera = N | | status_camera = N | ||
Line 42: | Line 42: | ||
| status_nfc = - | | status_nfc = - | ||
<!-- Sensors --> | <!-- Sensors --> | ||
| status_accel = | | status_accel = Y | ||
| status_magnet = | | status_magnet = - | ||
| status_light = N | | status_light = N | ||
| status_proximity = N | | status_proximity = N | ||
Line 63: | Line 63: | ||
| status_ethernet = - | | status_ethernet = - | ||
| status_fossbootloader = - | | status_fossbootloader = - | ||
| booting = yes | | booting = yes | ||
| status = | | status = community | ||
}} | }} | ||
Line 91: | Line 90: | ||
== Installation == | == Installation == | ||
Use [[pmbootstrap]] to build your own installation image. The device requires lk2nd for panel and touchscreen selection. | Use [[pmbootstrap]] to build your own installation image. The device requires [https://github.com/msm8916-mainline/lk2nd lk2nd] for panel and touchscreen selection. | ||
As mentioned in the Bootloader section, the bootloader on the device cannot be used in the unlocked state at this time. The device does not boot when the bootloader is unlocked. | As mentioned in the Bootloader section, the bootloader on the device cannot be used in the unlocked state at this time. The device does not boot when the bootloader is unlocked. | ||
While secure boot is enabled, the device will accept an AVB1 signed image for booting. | While secure boot is enabled, the device will accept an AVB1 signed image for booting. | ||
Due to this any kernel or lk2nd image flashed to the <code>boot</code> partition will need to be signed | Due to this any kernel or lk2nd image flashed to the <code>boot</code> partition will need to be signed. | ||
lk2nd can build properly signed images using the following build command: | |||
<syntaxhighlight lang="shell-session"> | |||
$ make TOOLCHAIN_PREFIX=arm-none-eabi- SIGN_BOOTIMG=1 LK2ND_QCDTBS="" lk2nd-msm8953 | |||
</syntaxhighlight> | |||
The images can then be flashed using EDL: | The images can then be flashed using EDL: | ||
< | <syntaxhighlight lang="shell-session"> | ||
$ pmbootstrap init | $ pmbootstrap init # select qcom-msm8953 as your device | ||
$ pmbootstrap install | $ pmbootstrap install | ||
$ edl w boot <path to signed lk2nd.img> | $ edl w boot <path to signed lk2nd.img> | ||
$ edl w userdata <path to rootfs img with kernel in ext2 /boot subpartition> | $ edl w userdata <path to rootfs img with kernel in ext2 /boot subpartition> | ||
</ | </syntaxhighlight> | ||
Alternatively, once lk2nd is installed, you can also flash the rootfs from within lk2nd fastboot mode using the command that pmbootstrap suggests after building the image: | |||
<syntaxhighlight lang="shell-session"> | |||
$ pmbootstrap flasher flash_rootfs | |||
</syntaxhighlight> | |||
== Hardware == | == Hardware == | ||
Line 111: | Line 121: | ||
# BOE TV080WXM-LL4 (Touch IC: FocalTech FT8201) | # BOE TV080WXM-LL4 (Touch IC: FocalTech FT8201) | ||
# Innolux P080DDD- | # Innolux P080DDD-AB4 (Touch IC: Himax HX83100A) | ||
As of Kernel 6.11 both variants have working touchscreen drivers in mainline. | |||
=== Audio === | === Audio === | ||
Line 182: | Line 192: | ||
Bluetooth is connected to the SoC via UART. Bluetooth audio is currently not functional, due to the above mentioned lack in PCM support on the audio codec. | Bluetooth is connected to the SoC via UART. Bluetooth audio is currently not functional, due to the above mentioned lack in PCM support on the audio codec. | ||
HID devices via Bluetooth have been tested and work. | HID devices via Bluetooth have been tested and work. | ||
== Mainline Support == | |||
The following commits were made as part of mainline support for this device. | |||
=== ALSA UCM Configuration === | |||
* [https://github.com/msm8953-mainline/alsa-ucm-conf/commit/28be72c8a47492084738859b83a758f76b36c1ea add Lenovo ThinkSmart View (CD-18781) config] | |||
=== Kernel === | |||
==== Device Tree ==== | |||
* [https://github.com/msm8953-mainline/linux/pull/221 Add Lenovo ThinkSmart View (CD-18781Y) (merged)] | |||
==== Touchscreen ==== | |||
* [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5e91cef94426d71e3156864d52753ace4cee721a Input: himax_hx83112b - add support for HX83100A] | |||
* [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=aa9007ed2d3880d41566625dd4df40886e4f45cb Input: himax_hx83112b - add himax_chip struct for multi-chip support] | |||
* [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0944829d491e0f342924154d2e58c6b2e61e3595 Input: himax_hx83112b - implement MCU register reading] | |||
* [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05eab5456b24230a30b65bcd6793937cb84d3de8 Input: himax_hx83112b - use more descriptive register defines] | |||
* [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a742e61dbb7198b51af772c7b80ed81ed298a88f dt-bindings: input: touchscreen: himax,hx83112b: add HX83100A] | |||
* [https://lore.kernel.org/lkml/20240804031310.331871-2-felix@kaechele.ca/T/ Input: edt-ft5x06 - add support for FocalTech FT8201] | |||
==== Panel Driver ==== | |||
* [https://github.com/msm8953-mainline/linux-panel-drivers/commit/fe88692f068a107a95501b6289f064c547ac7c4b config/dtb: Add Lenovo ThinkSmart View (CD-18781Y)] | |||
==== Wireless ==== | |||
* [https://lore.kernel.org/ath10k/20240805040131.450412-1-felix@kaechele.ca/T/ Add support for QCA9379 hw1.0 SDIO WiFi/BT] | |||
=== lk2nd === | |||
* [https://github.com/msm8916-mainline/lk2nd/commit/1609bef06628d795e3b7e0d091bc31b7914dc243 dts: msm8953: Add Lenovo ThinkSmart View (CD-18781Y)] | |||
* [https://github.com/msm8916-mainline/lk2nd/commit/e29488c12dbc1747dd86af7198bbb017de2a5a43 lk2nd: build: add option to sign bootimg] | |||
* [https://github.com/msm8916-mainline/lk2nd/commit/86446f78d58e0556d8bb0e3364a934749b5baafc dts: msm8953: Add build documentation to Lenovo ThinkSmart View (CD-18781Y)] | |||
=== postmarketOS === | |||
* [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/6041 pmaports MR with kernel changes] | |||
== See also == | == See also == |
Latest revision as of 03:02, 28 January 2025
![]() Lenovo ThinkSmart View (CD-18781Y) running postmarketOS | |
Manufacturer | Lenovo |
---|---|
Name | ThinkSmart View |
Codename | lenovo-cd-18781y |
Model | CD-18781Y |
Released | 2020 |
Type | desktop |
Hardware | |
Chipset | Qualcomm APQ8053 |
CPU | 1.8 GHz Cortex-A53 |
GPU | Adreno 506 |
Display | 800x1280 LCD |
Storage | 8GB |
Memory | 2GB |
Architecture | aarch64 |
Software | |
Original software | Android |
Original version | 8.1 |
postmarketOS | |
postmarketOS kernel | 6.12 |
Unixbench Whet/Dhry score | 3755.6 |
Flashing |
Broken |
---|---|
USB Networking |
Works |
Internal storage |
Works |
Screen |
Works |
Touchscreen |
Works |
Multimedia | |
3D Acceleration |
Works |
Audio |
Works |
Camera |
Broken |
Connectivity | |
WiFi |
Works |
Bluetooth |
Partial |
Miscellaneous | |
USB OTG |
Partial |
Sensors | |
Accelerometer |
Works |
Ambient Light |
Broken |
Proximity |
Broken |
The Lenovo ThinkSmart View is a desktop device that was originally intended to be used with video meeting software such as Microsoft Teams or Zoom. Its hardware is almost identical to the Lenovo Smart Display (SD-8501F/SD-X701B/SD-X501F), however the Smart Display series uses a different software and bootloader setup.
The product is based on Qualcomm's Home Hub / Smart Display 200 platform.
Contributors
Users owning this device
Bootloader
The stock bootloader is locked and secure boot is enabled. The bootloader can be unlocked via fastboot oem unlock-go
but the device does not boot at all when the bootloader is unlocked. Re-locking the bootloader will restore the ability to boot.
The bootloader requires AVB1 signed images to successfully boot.
The device can boot using lk2nd. This works around the secure boot limitations. Additional steps required to make lk2nd work on this device are described in the Installation section.
How to enter flash mode
Due to the device not booting with an unlocked bootloader the device must be flashed using EDL mode. Hold down Volume Up + Volume Down while powering on the device to enter EDL mode.
The loader collection that comes with B. Kerler's EDL contains a working firehose loader for this device.
Installation
Use pmbootstrap to build your own installation image. The device requires lk2nd for panel and touchscreen selection.
As mentioned in the Bootloader section, the bootloader on the device cannot be used in the unlocked state at this time. The device does not boot when the bootloader is unlocked.
While secure boot is enabled, the device will accept an AVB1 signed image for booting.
Due to this any kernel or lk2nd image flashed to the boot
partition will need to be signed.
lk2nd can build properly signed images using the following build command:
$ make TOOLCHAIN_PREFIX=arm-none-eabi- SIGN_BOOTIMG=1 LK2ND_QCDTBS="" lk2nd-msm8953
The images can then be flashed using EDL:
$ pmbootstrap init # select qcom-msm8953 as your device
$ pmbootstrap install
$ edl w boot <path to signed lk2nd.img>
$ edl w userdata <path to rootfs img with kernel in ext2 /boot subpartition>
Alternatively, once lk2nd is installed, you can also flash the rootfs from within lk2nd fastboot mode using the command that pmbootstrap suggests after building the image:
$ pmbootstrap flasher flash_rootfs
Hardware
Display
Two panel / touchscreen variants are known:
- BOE TV080WXM-LL4 (Touch IC: FocalTech FT8201)
- Innolux P080DDD-AB4 (Touch IC: Himax HX83100A)
As of Kernel 6.11 both variants have working touchscreen drivers in mainline.
Audio
Speaker
The device has one speaker connected to a Texas Instruments TAS5782M amplifier/DSP. The driver for this codec is currently a work in progress.
Microphones
The Device has two microphones, DMIC1 (MIC4 on the PCB) and DMIC2 (MIC3 on PCB). In the portrait orientation DMIC2 is above the Mic Mute slider and DMIC1 is below the Volume Down key. The ALSA UCM configuration for the device configures them as Stereo microphones with DMIC1 as the Left and DMIC2 as the Right channel.
Bluetooth Audio
Bluetooth Audio is connected to the Secondary PCM channel of the internal codec. There currently is no support for it in the mainline drivers. A patch was submitted but then abandoned: [alsa-devel] [PATCH 0/8] ASoC: qdsp6: db820c: Add support for external and bluetooth audio
Connectivity
USB
USB-C | Function |
---|---|
A4/B4 | USB VCC |
A5/B5 | UART RX |
A6/B6 | USB D+ |
A7/B7 | USB D- |
A8/B8 | UART TX |
A9/B9 | USB VCC |
A USB-C connector can be found under the rubber foot at the top right corner of the device, when the device is in portrait mode. This USB-C connector supports USB2.0 and has pinouts for UART. It cannot provide power to connected peripherals.
USB OTG
USB OTG works but requires the use of an external power source, specifically +5V on the USB port's VBUS. Due to this:
- externally powered USB devices (such as hard drives with an external power supply) often do not work because they still expect 5V from the host to enable their USB controllers
- externally powered USB hubs often work
- USB-C OTG adapters that allow for external power sources have also been tested and work
WARNING: Some powered USB hubs and cables may output voltage on VCONN, which is either the CC1 or CC2 (A5 or B5) pin, depending on the orientation of the cable. This pin is internally connected to the SoC's UART TX pin, so applying voltage to it may damage the SoC. It did not cause any damage when this was (rather unintendedly) tested but there is a chance it may. |
By default the device is configured in device
mode. Since the USB-C socket is not wired up to provide USB ID you will have to manually switch the USB mode to host
:
$ echo "host" | sudo tee /sys/kernel/debug/usb/7000000.usb/mode
Note that the device will revert from host
mode to device
mode when the external power source is removed.
UART
UART can be found on the USB-C connector on pins SBU1/SBU2 (A8/B8) for RX and CC1/CC2 (A5/B5) for TX. The bootloader serial configuration is 115200–8-N-1 and logic levels are at 1.8V.
WARNING: Ensure your logic levels are at 1.8V as higher voltages, such as the very common 3.3V or 5V, may damage your hardware. |
There are readily available USB-C breakout boards and connector PCBs that break out the required pins. Common 17 pin connector PCBs found on AliExpress can be connected on pins A8 and B5 to break out UART RX and UART TX while simultaneously allowing to use pins A6/B6 (D+), A7/B7 (D-) and A9/B9 (VBUS) for USB2.0 connectivity. Full reversibility of the connector is also maintained in this way.
WLAN
The device uses a Lite-ON WCBN3510A module connected via SDIO. This card contains the Qualcomm Atheros QCA9379-3 SoC for WiFi and Bluetooth. Support for the WiFi part in the mainline ath10k driver is a work in progress.
Using SSH through the WiFi connection is somewhat sluggish. This issue also exists in the original Android Firmware and may be caused by a bug in the WiFi adapters' firmware or a hardware design error relating to the SD bus.
Bluetooth
Bluetooth is connected to the SoC via UART. Bluetooth audio is currently not functional, due to the above mentioned lack in PCM support on the audio codec. HID devices via Bluetooth have been tested and work.
Mainline Support
The following commits were made as part of mainline support for this device.
ALSA UCM Configuration
Kernel
Device Tree
Touchscreen
- Input: himax_hx83112b - add support for HX83100A
- Input: himax_hx83112b - add himax_chip struct for multi-chip support
- Input: himax_hx83112b - implement MCU register reading
- Input: himax_hx83112b - use more descriptive register defines
- dt-bindings: input: touchscreen: himax,hx83112b: add HX83100A
- Input: edt-ft5x06 - add support for FocalTech FT8201
Panel Driver
Wireless
lk2nd
- dts: msm8953: Add Lenovo ThinkSmart View (CD-18781Y)
- lk2nd: build: add option to sign bootimg
- dts: msm8953: Add build documentation to Lenovo ThinkSmart View (CD-18781Y)