PINE64 Don't be evil devkit (pine64-dontbeevil)
USB Networking |
Unavailable |
---|---|
Flashing |
Unavailable |
Touchscreen |
Partial |
Display |
Works |
WiFi |
Partial |
Xwayland |
Works |
FDE |
Broken |
Mainline |
Works |
Battery |
Works |
3D Acceleration |
Broken |
Accelerometer |
Works |
Audio |
Works |
Bluetooth |
Broken |
Camera |
Works |
GPS |
Broken |
Mobile data |
Broken |
SMS |
Broken |
Calls |
Broken |
USB OTG |
Broken |
Contents
Contributors
Serial console
There is a 3.3V uart on the 2x5pin connector near the modem. The pin in the corner toward VOL- is GND and the next pin is TX.
The baudrate in u-boot and in Linux is 115200n8
Components
Component | Model | Mainline |
---|---|---|
Touchscreen | FocalTech FT6336GU | edt_ft5x06 |
Rear camera | OmniVision OV5640 | Yes, ov5640 |
Front camera | GalaxyCore GC2035 | Nope |
LCD | JD9365D | pine64/linux |
Wifi/Bluetooth | RTL8723BS | CONFIG_RTL8723BS for wifi, no bluetooth support |
Modem | Quectel EC25-E | USB_NET_QMI_WWAN |
Magnetometer | ST LIS3MDL | yes |
Ambient light / Proximity | SensorTek STK3335 | works with stk3310 |
Sixaxis | InvenSense MPU-6050 | yes |
Touchscreen
The touchscreen is controlled by the edt_ft5x06
module on i2c-0. The current issue is that it takes a long while before the i2c-0 bus works after booting. For some reason it takes ~110 seconds before communication is possible. This causes an issue because the module tries to probe the touchscreen before the bus works.
The current workaround is to build edt_ft5x06
as a module and rmmod/modprobe the module after the i2c-0 bus works so it gets probed again.
[ 17.942111] edt_ft5x06 0-0038: touchscreen probe failed
...after rmmod edt_ft5x06; modprobe edt_ft5x06...
[ 3989.326377] input: generic ft5x06 (12) as /devices/platform/soc/1c2ac00.i2c/i2c-0/0-0038/input/input2
The communication to the touchscreen controller is only possible when power is supplied the the 4G modem using the hardware switch (the light should be off) since the power rail for the 4G modem is used as pull-up for the i2c bus that connects the touchscreen controller to the sopine.
Cameras
The camera's both share the csi-0 bus. Currently only the rear camera (OV5640) has mainline linux support.
It's also not clear how the camera switching would work on the software side, maybe Linux just deals with it if the device tree nodes for the second camera get added.
The camera hardware pipeline is controlled with /dev/media0
and media-ctl
, the result is on /dev/video0
pine-dontbeevil:~# media-ctl --set-v4l2 '"ov5640 2-003c":0[fmt:UYVY8_2X8/1280x720]'
pine-dontbeevil:~# ffmpeg -s 1280x720 -f video4linux2 -i /dev/video0 -vframes 1 selfie.jpg
WiFi/Bluetooth
The wifi interface shows up and is able to scan for networks, it doesn't want to actually connect most of the times, if it doesn't work then reboot and try again.
[ 1962.148414] RTL8723BS: set bssid:e4:8d:8c:49:44:e2
[ 1962.148468] RTL8723BS: set ssid [BrixIT] fw_state = 0x00000088
[ 1962.159624] RTL8723BS: start auth
[ 1962.161053] RTL8723BS: auth success, start assoc
[ 1972.568295] RTL8723BS: set bssid:00:00:00:00:00:00
[ 1985.233165] RTL8723BS: set bssid:e4:8d:8c:49:44:e2
[ 1985.233228] RTL8723BS: set ssid [BrixIT] fw_state = 0x00000088
[ 1985.304510] RTL8723BS: start auth
[ 1985.306184] RTL8723BS: auth success, start assoc
[ 1995.657207] RTL8723BS: set bssid:00:00:00:00:00:00
[ 2006.185941] RTL8723BS: set bssid:e4:8d:8c:49:44:e2
[ 2006.185994] RTL8723BS: set ssid [BrixIT] fw_state = 0x00000088
[ 2006.193313] RTL8723BS: start auth
[ 2006.194839] RTL8723BS: auth success, start assoc
[ 2010.497801] RTL8723BS: set bssid:00:00:00:00:00:00
The bluetooth part of the RTL8723BS isn't supported in mainline yet. Theres a repository with some support at https://github.com/lwfinger/rtl8723bs_bt
Modem
Haven't looked at yet
Sensors
All sensors work and are accessible as Industrial I/O (iio) devices in linux. To query the data you can cat the files in `/sys/bus/iio/` to make the kernel module query the sensors
dontbeevil:~# cat /sys/bus/iio/devices/iio\:device0/name
mpu6050
dontbeevil:~# cat /sys/bus/iio/devices/iio\:device0/in_accel_z_raw
-17594
dontbeevil:~# echo "Verified gravity still exists"
The stk3310
module doesn't load automatically, after running modprobe stk3310
the third device in `/sys/bus/iio` should show up.
RGB Led
All the required gpio-led stuff is added to the device tree but the gpio-led module doesn't do anything. No led devices, No errors, No log messages.
Audio
The A64 SoC audio should work on mainline with the CONFIG_SUN50I_CODEC_ANALOG
option enabled. Sound output should work after unmuting AIF1 Slot 0 digital
USB
USB gets loaded but doesn't work yet:
[ 0.186880] usbcore: registered new device driver usb
[ 0.535763] sun4i-usb-phy 1c19400.phy: failed to get clock usb0_phy
[ 0.572453] ehci-platform 1c1a000.usb: EHCI Host Controller
[ 0.572477] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1
[ 0.573646] ehci-platform 1c1a000.usb: irq 17, io mem 0x01c1a000
[ 0.586033] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
[ 0.587976] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
[ 0.587997] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2
[ 0.588307] ohci-platform 1c1a400.usb: irq 18, io mem 0x01c1a400
pine-dontbeevil:~# lsusb
Bus 005 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0002
Bus 001 Device 001: ID 1d6b:0002
Bus 004 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0001
pine-dontbeevil:~# lsusb -t
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/1p, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/1p, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
See also
- pmaports!308 Initial merge request