Manga Screen 2

From iagent
Revision as of 19:47, 20 October 2018 by Elias (talk | contribs)
Jump to: navigation, search
ISO-render-2.png

Manga Screen 2 is an LCD screen with a capacitive touch panel and an HDMI input.

It comes in two versions: Big, 5.9", 1080p Small, 4.8", 720p

If you have a Beaglebone black, a Raspberry Pi or on Odroid or any other embedded or personal computer with a DVI or HDMI output, you can attach a Manga Screen to it and it will work like a normal screen.

The resolution is high for such a small screen with 1080x1920 (Full HD) and the capacitive touch screen driver used is the fabulous Synaptics S3202.

Here are some tech specs for both screens

Front-render.png
Render back both.png

Here is a picture of the first working prototype

MS2-first-prototype.jpg

<img src="http://www.thing-printer.com/wp-content/uploads/2017/02/2017-01-30-20.41.19.jpg" width="100%">


Where to buy

It's currently available for purchase from thing-printer.com

Cables

HDMI

The HDMI connector on the screen is a type A (regular) https://en.wikipedia.org/wiki/HDMI#Connectors

USB

The USB connector on the screen is of type micro. It can be purchased in just about every Cheap Charley like store.

Getting started

Raspberry Pi

Manga Screen Rev B has been tested on Raspberry pi 1, 2 and 3. Raspberry Pi will not accept the EDID with the right resolution, even if it is the same as the resolution forced by taking it from the config file. Raspberry Pi works great with 60 FPS though.

Screen rotation and frame rate

If you have a Raspberry Pi, you will need to override the settings manually to get the right rotation and resolution. Look at the config page for Raspberry Pi, the section called "custom mode" for HDMI: https://www.raspberrypi.org/documentation/configuration/config-txt.md

Edit the config file:

sudo nano /boot/config.txt

Add this to the end of it:

hdmi_cvt=1080 1920 60 5 0 0 0
hdmi_group=2
hdmi_mode=87

max_framebuffer_width=1920
max_framebuffer_height=1920

display_rotate=1

You can also set the timings manually on more modern firmwares:

hdmi_group=2
hdmi_mode=87
hdmi_timings=1080 1 100 10 60 1920 1 4 2 4 0 0 0 60 0 144000000 3

The format of the above line is as follows:

hdmi_timings=<h_active_pixels> <h_sync_polarity <h_front_porch> <h_sync_pulse> <h_back_porch> <v_active_lines> <v_sync_polarity> <v_front_porch> <v_sync_pulse> <v_back_porch> <v_sync_offset_a> <v_sync_offset_b> <pixel_rep> <frame_rate> <interlaced> <pixel_freq> <aspect_ratio>

For the MS2 small you can use the following timings. 57 Hz is the maximum according to the LCD datasheet, but 60 Hz is also included and works fine:

hdmi_group=2
hdmi_mode=87
hdmi_timings=720 1 393 7 14 1280 1 4 2 4 0 0 0 57 0 83000000 3
#hdmi_timings=720 1 393 7 14 1280 1 4 2 4 0 0 0 60 0 87000000 3 # 60 FPS
#hdmi_timings=720 1 393 7 14 1280 1 4 2 4 0 0 0 30 0 44000000 3 # 30 FPS
#hdmi_timings=720 1 393 7 14 1280 1 4 2 4 0 0 0 30 0 35000000 3 # 24 FPS

To check that the right resolution is used, check the output from the tvservice program:

~$ tvservice -s
state 0x120006 [DVI DMT (87) RGB full 16:9], 720x1280 @ 57.00Hz, progressive

Touch panel rotation

The touch panel is rotated 180 degrees compared to the LCD, so you need to add a rule to udev to rotate it back:

sudo nano /etc/udev/rules.d/99-manga.rules

Add this:

ACTION=="add", ATTRS{name}=="Intelligent Agent AS Manga Screen 2", ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1"

BeagleBone Black

Works with resolution 1088 x 1920. Note that the x-resolution needs to be a multiple of 16. The remaining pixels will disappear into the vertical back porch.

I want to rotate Tux

When Linux boots, Tux (the penguin) is shown in the top left corner. If you want him to sit the right way, you need to edit the uEnv.txt file. This also rotates the command line interface:

 nano  /boot/uEnv.txt

Add this to the kernel command line:

fbcon=rotate:3

Windows

Odroid

Seems to work fine out of the box with Odroid C2 both using latest Ubuntu and Android. Resolution can be grabbed from EDID.

Linux users

Typically, the touch input is mapped to the main screen. To map the touch panel to the screen in X, use following command:

xinput map-to-output <device_nr> <output>

To list the input sources for X, use the following command:

xinput --list

To list the output sources, use the following commands:

xrandr

To rotate or invert axes in an X based server:

pi@prompt:~ $ DISPLAY=:0 xinput --list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Intelligent Agent AS Manga Screen 2     	id=6	[slave  pointer  (2)]
pi@prompt:~ $ DISPLAY=:0 xinput set-prop 'Intelligent Agent AS Manga Screen 2' 'Evdev Axes Swap' 1
pi@prompt:~ $ DISPLAY=:0 xinput --set-prop 'Intelligent Agent AS Manga Screen 2' 'Evdev Axis Inversion' 1 0

Testing with tslib

TSlib is a great program for testing the screen and making sure the touch and multi touch is working as expected. Please note that there seems to be a delay in updating the position on the long side. Not sure why this is happening, but its seems to be due to some filtering happening.

Adjusting things

When plugged in the screen should enumerate as a mixed device, both a touch device and a serial device. The touch device will provide the touch screen data and the serial device can be used for controlling stuff on the screen.

To get a list of commands, write

help

Brightness

printf "backlight 100\r" > /dev/ttyACM0 

Digitizer rotation

DISPLAY=:0 xinput set-prop "Intelligent Agent AS Manga Screen 2" "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1

Uploading EDID

EDID is bundled with the firmware and can not be updated on MS2.

Files

https://www.dropbox.com/sh/q73nyea67a8h55g/AAB-XySmhrjl8W3W276NMPOaa?dl=0