Difference between revisions of "Samsung Galaxy Tab 10.1 (samsung-p4wifi)"
m (→Bluetooth: minor fix ups) |
(→Video Decoding: Usability of vdpau driver) |
||
Line 79: | Line 79: | ||
Video Decoder Engine (VDE) was added to mainline kernel v4.16. The grate-driver includes hardware h264 decoding with libvdpau-tegra. | Video Decoder Engine (VDE) was added to mainline kernel v4.16. The grate-driver includes hardware h264 decoding with libvdpau-tegra. | ||
+ | |||
+ | The vdpau driver does '''not''' support h264 videos encoded with: | ||
+ | * weighted prediction | ||
+ | * CABAC | ||
+ | |||
+ | Sample video that can be decoded with hardware acceleration: | ||
+ | https://peach.blender.org/trailer-page/ | ||
+ | |||
+ | <source lang="shell"> | ||
+ | $ mpv --hwdec=vdpau trailer_720p.mov | ||
+ | Using hardware decoding (vdpau). | ||
+ | VO: [vdpau] 1280x720 vdpau[yuv420p] | ||
+ | </source> | ||
== Audio == | == Audio == |
Revision as of 16:43, 20 December 2018
USB Networking |
Works |
---|---|
Flashing |
Works |
Touchscreen |
Works |
Display |
Works |
WiFi |
Works |
Xwayland | |
FDE |
Works |
Mainline |
Partial |
Battery |
Works |
3D Acceleration | |
Accelerometer | |
Audio |
Partial |
Bluetooth |
Works |
Camera | |
GPS | |
Mobile data | |
SMS | |
Calls | |
USB OTG | |
Contents
Contributors
- decatf
Maintainer(s)
- decatf
Introduction
postmarketOS for the Samsung Galaxy Tab 10.1 runs on mainline Linux kernel fork. The kernel uses both mainline and forward ported drivers. Some peripherals are using mainline device driver where applicable. Some peripherals which are not working on or don't have mainline drivers are using drivers forward ported from the stock 3.1.10 kernel.
How to enter flash mode
Press and hold Power + Volume Down buttons
Installation
- Init pmbootstrapChoose 'samsung-p4wifi' as target device.
$ pmbootstrap init
- Start the build process
$ pmbootstrap build linux-samsung-p4wifi $ pmbootstrap build device-samsung-p4wifi $ pmbootstrap install --no-fde
- Enter flash (download) mode
- Flash the kernel and system images
$ pmbootstrap flasher flash_kernel $ pmbootstrap flasher flash_rootfs
Battery
The battery in this device is the max17042
. A tear down of the (nearly) identical Galaxy Tab 8.9 reveals that the charger is max8903
.
Differences between mainline and downstream drivers:
The downstream kernel provides an early implementation of a driver for the max17042
battery. The implementation of the battery and charger driver are split across p4_battery.c
and max17042_battery.c
. The downstream charger driver implements additional logic to handle charge full and low battery events which may affect the health of the battery. The implementation details are not clear but the overall functionality appears to dynamically tune the full charge value. The mainline driver does not have this sort of functionality. The downstream driver reports the current in milliamp whereas the mainline driver is in microamp.
The max8903
datasheet shows that there are separate GPIOs for USB and DC power connectors. This device has one connect GPIO for both USB and DC mode. The type of connector is determined by reading the usb-sel
GPIOs. It's unclear which piece of hardware the usb-sel is coming from (max8903 / tegra soc / 30-pin connector ???).
Graphics
The reverse engineer grate-driver provides 2D (EXA) acceleration on X11. There is minimal 3D implementation which is not complete enough to run the Wayland compositor.
Usability of desktop environments:
- Xfce4 and Mate desktop will run on 2D acceleration.
- Wayland desktops will only work with software rendering backends.
- Hildon requires an OpenGL backend.
- As of cogl 1.22.2 the clutter/cogl backend requires stencil buffers (
EGL_STENCIL_SIZE
). This not implemented in the grate-driver.
- As of cogl 1.22.2 the clutter/cogl backend requires stencil buffers (
Video Decoding
Video Decoder Engine (VDE) was added to mainline kernel v4.16. The grate-driver includes hardware h264 decoding with libvdpau-tegra.
The vdpau driver does not support h264 videos encoded with:
- weighted prediction
- CABAC
Sample video that can be decoded with hardware acceleration: https://peach.blender.org/trailer-page/
$ mpv --hwdec=vdpau trailer_720p.mov
Using hardware decoding (vdpau).
VO: [vdpau] 1280x720 vdpau[yuv420p]
Audio
Headphone and speaker output are working on the mainline wm8994 driver. Microphone inputs are not working.
The ALSA UCM config files were generated using the xml2ucm
tool. The mixer_paths.xml
and p4wifi.config.xml
can be found in this github gist.
$ stack exec -- xml2ucm -m mixer_paths.xml -c p4wifi-config.xml -o examples
Wifi
The wifi chip in this device is the Broadcom BCM4330 B1 revision. There is a B2 revision which is much more common. The only distinguishing factor is the firmware. Only the B1 firmware will work on this device. The most common BCM4330 firmware found from various sources (such as linux-firmware
) is for the B2 revision.
Cellular Modem
The xmm6260 modem was used in quite a few Samsung Android devices from the same era as this tablet. The Samsung Galaxy Tab 10.1 3G (p4) and Samsung Galaxy Tab 10.1 from T-Mobile (p4tmo) are otherwise identical to the WiFi only version of the tablet (p4wifi). The cellular modem is connected via an internal USB interface called USB HSIC. The mainline Tegra USB driver does not implement this functionality. Much of the work in enabling the cellular stack would involve adding USB HSIC support to the mainline USB driver.
Bluetooth
The bcm4330 Bluetooth module is supported by the mainline kernel and Bluez 5 stack.
Install bluetooth service:
$ apk add blueman
$ rc-update add bluetooth default
$ rc-service start bluetooth
Pair a Bluetooth device:
$ bluetoothctl
$ power on
$ scan on
$ connect XX:XX:XX:XX:XX:XX
$ scan off
Audio
The following instructions will play audio to a Bluetooth headset.
Install PulseAudio:
$ apk add pulseaudio pulseaudio-bluez pulseaudio-utils
Start PulseAudio:
$ pulseaudio --daemonize
Check that the Bluetooth audio profiles are working in bluetoothctl:
$ show
Controller XX:XX:XX:XX:XX:XX (public)
Name: BlueZ 5.49
Alias: BlueZ 5.49
Class: 0x000c0000
Powered: yes
Discoverable: no
Pairable: yes
UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
UUID: Headset (00001108-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0531
Discovering: no
Play an audio file through a Bluetooth headset:
$ paplay audio.wav
Other Information
Hardware Information & Mainline Driver Status
The Linux mainlining effort contains drivers forward ported from the stock Samsung Linux 3.1.10 kernel which shipped with the device. Some peripheral devices have been transitioned over to the mainline driver. Other drivers are not in the mainline kernel or the device is not compatible with the mainline driver.
Peripheral Type | Hardware | Mainline Driver Status |
---|---|---|
Accelerometer | kxtf91 | |
Ambient light sensor | bh1721fvc | Y |
Analog Digital Converter | stmpe811 | Y |
Audio | wm8994 | Y |
Battery | max17042 | Y |
Camera | s5k5ccgx (front) s5k6bbgx (back) |
- |
Charger | max8903 | Y |
Compass | ak8975c2 | |
CPU Temperature Sensor | nct1008 | Y |
Display Panel | cmc623 | P |
GPS | bcm4751 | P |
GPU | tegra host1x | Y |
Gyroscope | mpu3050 | Y |
HDMI Connector | sii92343 | |
Touch Digitizer | mxt1386 | Y |
Vibration Motor | isa1200 | P |
Voltage Regulators | tps6586x | Y |
Wifi / Bluetooth | bcm4330 | Y |
3G Modem | xmm6260 | - |
3.5mm Jack | sec_jack | P |
30-pin accessory port | unknown | - |
Notes:
- 1: kxt9f driver exists in mainline. The driver needs support device tree bindings.
- 2: ak8975 driver exists in mainline. The device id for ak8975c needs to be added to the driver. I (decatf) can't test it because the compass seems to report nonsense data. The compass on my tablet might be broken.
- 3: sii9234 driver exists in mainline. Requires someone with an MHL cable to implement / test it.
Mainline Driver Status Legend
Code | Meaning |
---|---|
Y | Mainline driver |
P | Forward ported driver |
- | No driver -- driver has not been forward ported |
See also
- #1279 Initial pull request
- decatf mainline Linux kernel
- stock Samsung 3.1.10 kernel
- Grate driver
- #1386 Update linux-samsung-p4wifi to kernel 4.16 (with some comments about what's left to do before we could have a shared mainline kernel)