Documentation

Quick Start Guide

Getting Started

Video Introduction

How-tos in TinkerOS

TinkerOS

Remote access

TightVNC

Follow the instructions on http://www.yuriybaldyasov.com/2017/05/15/asus-tinker-board-tightvnc-server-installation-steps/

X11vnc

sudo apt-get install x11vnc

The following file shoud be opened ~/.config/lxsession/LXDE/autostart and this line should be added to the bottom:

@x11vnc -noxrecord -forever

noxrecord fixes a problem it has with stack smashing on this board

forever option keeps the server alive after a connect and disconnect from a client

It must be restarted to run without a terminal.

Vino

Similar process is found on https://wiki.archlinux.org/index.php/Vino

VPN Server

A guide for RPi can be used also for Tinker Board and can be found on: https://pimylifeup.com/raspberry-pi-vpn-server/

Netflix, Hulu, Amazon Prime

A guide is published on tinkerboarding forum.

Netflix is also available on android via Google Play.

Virtual Keyboard

If you do not have a USB keyboard it is possible to install virtual keyboard via ssh with command ‘sudo apt-get install matchbox-keyboard’. To run the virtual keyboard run the ‘matchbox-keyboard’ in the terminal.

How to build Kernel/U-boot source code

U-boot

Get source code:

$ git clone https://github.com/TinkerBoard/debian_u-boot.git -b release

Building image:

$ cd debian_u-boot
            $ make CROSS_COMPILE=arm-linux-gnueabihf- O=miniarm-rk3288 tinker-rk3288_defconfig all -j4 
            $ miniarm-rk3288/tools/mkimage -n rk3288 -T rksd -d miniarm-rk3288/spl/u-boot-spl-dtb.bin u-boot.img
            $ cat miniarm-rk3288/u-boot.bin >> u-boot.img

Flash image:

Prepare one sdcard which has the full Debian image inside.

Then insert the sdcard into a linux based OS, and suppose the block device of the sdcard is /dev/sdx

 $ sudo dd if=[path]/u-boot.img of=/dev/sdx seek=64

Kernel

Install the related packages:

$ sudo apt-get install git-core gitk git-gui gcc-arm-linux-gnueabihf gcc-arm-linux-gnueabi device-tree-compiler gcc-aarch64-linux-gnu mtools parted libssl-dev fakeroot

Get source code:

$ git clone https://github.com/TinkerBoard/debian_kernel.git -b release

Building image:

$ cd debian_kernel
            $ make miniarm-rk3288_defconfig ARCH=arm -j16
            $ make zImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
            $ make modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
(Note: As of 2018-01-05, if may be necessary to edit the Makefile to add -Wno-misleading-indentation to the CFLAGS_MODULE 
$ make modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 CFLAGS_MODULE=-Wno-misleading-indentation
            $ make rk3288-miniarm.dtb ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
            $ make dtbs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

Flash image:

Prepare one sdcard which has the full Debian image inside.

  1. Install WIFI module to root file system:
  1.1 Insert sd card to linux pc and then mount partition 2 (rootfs partition) suppose the block device of the sdcard is /dev/sdx
Example:
$ sudo mkdir –p /media/users/sdx2
            $ sudo mount /dev/sdx2 /media/users/sdx2
1.2 Open terminal to kernel folder and enter the following commands
$ sudo make ARCH=arm INSTALL_MOD_PATH=/media/users/sdx2 modules_install
            $ sudo umount /media/users/sdx2
2. Replace the kernel image:
            2.1 Insert sd card to linux pc and then mount partition 1 (boot partition)
                suppose the block device of the sdcard is /dev/sdx
                Example:
$ sudo mkdir –p /media/users/sdx1
            $ sudo mount /dev/sdx1 /media/users/sdx1
2.2 Open terminal to kernel folder and copy zImage and rk3288-miniarm.dtb to partition 1
$ cp arch/arm/boot/zImage /media/users/sdx1
            $ cp arch/arm/boot/dts/rk3288-miniarm.dtb /media/users/sdx1
            $ sudo umount /media/users/sdx1
NOTE: The step 1.1 and 2.1 should be skipped since most of the linux distribution will mount the sdcard automatically.

PXE boot

Image version

Please use the image version before V1.9.1 (include), or after V2.0.5 (include).

NOTE : There is some problem from the image version V2.0.1 to V2.0.4, we have fixed it at V2.0.5.

Install tftp

1. Install following packages

sudo apt install xinetd tftpd

2. Create /etc/xinet.d/tftp and put this entry

service tftp
            {
              protocol     = udp
              port         = 69
              socket_type  = dgram
              wait         = yes
              user         = nobody
              server       = /usr/sbin/in.tftpd
              server_args  = -s /tftpboot
              disable      = no
            }

3. Create a folder /tftpboot

sudo mkdir /tftpboot
            sudo chmod -R 777 /tftpboot
            sudo chown -R nobody /tftpboot

4. Restart the xinetd service.

sudo service xinetd restart

Install nfs

1. Install following packages

sudo apt install nfs-kernel-server nfs-common

2. Create a folder/var/nfsshare

                  sudo mkdir /var/nfsshare
sudo chmod -R 777 /var/nfsshare
 

3. Create /etc/exports and put this entry

/var/nfsshare        10.42.0.0/24(rw,sync,no_subtree_check,no_root_squash)

4. Restart NFS server

/etc/init.d/nfs-kernel-server restart

PXE Boot

1.Set up a DHCP server as a PXE server. This server must provide functions of TFTP server and NFS server.

2.Prepare PXE config file in tftpboot directory. Create a directory “pxelinux.cfg” in tftpboot directory. The file name of PXE config is “default ”. The patch of PXE config should be :

“/tftpboot/pxelinux.cfg/default ” The content of PXE config is like “/boot/extlinux/extlinux.conf ” in Tinker Board, but the path of rootfs should be modified. The following is an example. “10.42.0.1 ” is IP of NFS server. “/nfs/rootfs/ ” is path of NFS ROOT.

label kernel-4.4
              kernel /zImage
              fdt /rk3288-miniarm.dtb
              append  earlyprintk console=tty1 console=ttyS1,115200n8 root=/dev/nfs nfsroot=10.42.0.1:/nfs/rootfs rw ip=dhcp rootwait elevator=deadline

1.Put the following files into tftpboot directory for PXE boot. hw_intf.conf: You can get it from “/boot/hw_intf.conf ” in Tinker Board. rk3288-miniarm.dtb: Device Tree config for Linux kernel. zImage: Linux kernel image with NFS functions(CONFIG_IP_PNP, CONFIG_IP_PNP_DHCP, CONFIG_IP_PNP_BOOTP, CONFIG_IP_PNP_RARP, and CONFIG_ROOT_NFS). The paths should be : “/tftpboot/hw_intf.conf “, “/tftpboot/rk3288-miniarm.dtb”, “/tftpboot/zImage”

2.Copy the whole rootfs of Tinker Board into NFS directory in NFS server. According to the example above, the path of NFS ROOT in NFS server should be: “/nfs/rootfs” This path needs to be shared by NFS server. Modify the partition definitions in “/nfs/rootfs/etc/fstab”. There should be only one partition.

proc            /proc           proc    defaults          0       0

3.Remove the following files in Tinker Board. “/boot/rk3288-miniarm.dtb” “/boot/zImage” The bootloader will start PXE boot if these files are removed from Tinker Board.

HDMI resolution

How to change the HDMI resolutions

Method 1 : from UI intereface

Using the Monitor settings to change the resolution directly.

Method 2 : Terminal (Command line) – Xrandr

The following is the wiki of the xrandr https://wiki.archlinux.org/index.php/xrandr

# list all the available output resolution
            $ xrandr

then you can use xrandr to set different resolution (must be present in the above list) on some output:

$ xrandr --output HDMI-1 --mode 1920x1080

Adding for unlisted resolution

$ cvt 1024 768 60
            # 1024x768 59.92 Hz (CVT 0.79M3) hsync: 47.82 kHz; pclk: 63.50 MHz
            Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
            
            $ xrandr --newmode "1024x768" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync
            $ xrandr --addmode HDMI1 1024x768
            $ xrandr --output HDMI1 --mode 1024x768

Method 3 : Editing /etc/X11/xorg.conf.d/20-modesetting.conf (Need to reboot)

Section "Device"
                Identifier  "Rockchip Graphics"
                Driver      "modesetting"
                Option      "AccelMethod"    "glamor"
                Option      "DRI"            "2"
            EndSection
            Section "Monitor"
                Identifier "Monitor 0"
                Modeline "1024x768_60.00" 63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
            EndSection
            Section "Screen"
                Identifier "Default Screen"
                Monitor "Monitor 0"
                SubSection "Display"
                    Depth 24
                    Modes "1024x768_60.00"
                EndSubSection
            EndSection

Method 4 : Add a file to the folder of /boot/hdmi (Need to plug in-out)

Add a new file of hdmi_set_resolution.cfg, and write the resolution which you want in the file.

Then put it in this folder “/boot/hdmi” or the hdmi folder which is in your sdcard. (These 2 paths are the same)

There is a example in the attached file.

Controlling Backlight

https://tinker-board.asus.com/forum/thread-2285.html

How to setup wireless connection

How to connect to Wi-Fi hotspot

1. Boot up your Tinker Board to desktop.

2. Left-click the network icon in bottom right corner of your desktop.

Wireless icon.png

3. Select Wi-Fi hotspot name which you want to connect.

Wireless icon 2.png

4. Enter your password or other connection settings to login.

Wireless connection password.png
How to get Tinker Board’s IP address

1. Open terminal in bottom left corner of your desktop.

Select terminal.png

2. Enter “sudo ifconfig” to display Tinker Board’s IP address.

Sudo ifconfig.png
How to access Tinker Board remotely

Windows

1. Download putty.exe from https://www.putty.org/

2. Open putty.exe and enter Tinker Board’s IP address.

Putty example.png

3. The default login for Tinker Debian.

User: linaro
            Password: linaro
Putty login.png

Debian

1. Enter “ssh linaro@192.168.x.x” to connect to Tinker Board. (192.168.x.x is IP address).

  ssh linaro@192.168.x.x

2. Login to Tinker Board.

Ssh connection.png

How-tos in Android

Android

How to root

In order to root Android you need to follow steps described atHow to install SuperSu on Android via adb

An example of a full script can be found onhttps://tinker-board.asus.com/forum/thread-264.html?highlight=android

How to build Tinker source code

Android 6.0.1 kernel

Get source code:

$ git clone https://github.com/TinkerBoard/android-6.0.1_kernel.git -b release
Building image:
$ cd android_kernel
            $ make rockchip_defconfig -j4
            $ make rk3288-miniarm.img -j4
Flash image:
            Prepare one sdcard which has the full Android image inside.  then insert the sdcard into a linux based OS, and suppose the block device of the sdcard is /dev/sdx 
$ sudo dd if=./resource.img of=/dev/sdx seek=32768
            $ sudo dd if=./kernel.img of=/dev/sdx seek=65536

How to build Android(AOSP) source code

Requirement

Install Google's repo command tool ref:https://source.android.com/setup/downloading

Make sure you have a bin/ directory in your home directory and that it is included in your path:
mkdir ~/bin
            PATH=~/bin:$PATH
Download the Repo tool and ensure that it is executable:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
            chmod a+x ~/bin/repo

Android 6.0.1 AOSP

Get source code:
$ repo init -u https://git@bitbucket.org/TinkerBoard_Android/manifest.git -b sbc/tinkerboard/asus/Android-6.0.1
            $ repo sync -d
Find the build SOP document at the below path.
            [source code]/RKDocs/android_SOP_eng_6.0.1.docx 

Android 7.1.2 AOSP

Get source code:
$ repo init -u https://git@bitbucket.org/TinkerBoard_Android/manifest.git -b sbc/tinkerboard/asus/Android-7.1.2
            $ repo sync -d
Find the build SOP document at the below path.
            [source code]/RKDocs/android_SOP_eng_7.1.2.docx 

Static boot logo

Requirement

1.Please prepare the 24 bit bmp file and the length/width must be divisible by 4.
For example: 1000×400, 1920×1080 are OK, but 1921×1000 is not allowed
We recommended that you can use the Microsoft paint to save the picture as the 24 bit bmp.
Let's assume the picture name is logo.bmp

2.Use the linux tool "convert" to change the format

$ convert -compress rle -colors 256 logo.bmp logo_kernel.bmp

logo.bmp is the file which is came from step 1 and logo_kernel.bmp is the file which is after convert.

Android M:
3.Replace the logo.bmp and logo_kernel.bmp which is came from step 1 and step 2 to the kernel folder
Android N:
3.use the logo_kernel.bmp which is came from step 2 to replace the logo.bmp and logo_kernel.bmp at kernel folder

4.Rebuild kernel image

How to rebuild kernel: https://tinkerboarding.co.uk/wiki/index.php?title=Software#Android_6.0.1_kernel

NOTE: Please notice that the version of "convert" is also importance. The version of convert must be equal to the below

$ convert -version
            Version: ImageMagick 6.6.9-7 2017-03-14 Q16 http://www.imagemagick.org
            Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
            Features: OpenMP

If your OS is Ubuntu 12.04,just use apt to get the convert package

$ sudo apt-get install imagemagick

If you have no Ubuntu 12.04, you can use the Tinker Board with Tinker-OS V2.0.3

$ sudo apt-get install graphicsmagick-imagemagick-compat

https://github.com/TinkerBoard/debian_kernel/releases/download/2.0.3/20170928-tinker-board-linaro-stretch-alip-v2.0.3.img.zip

Dynamic boot logo

You can reference the bootanimation.zip and replaced the png file inside. The Android framework will
play the picture from 0.png to the last png file one by one. And it will look like an animation.
After you finish the zip file, please put the bootanimation.zip to /system/media/bootanimation.zip
The zip file name must be bootanimation.zip. You can download the example from below link
https://bitbucket.org/TinkerBoard_Android/rk-device-rockchip-rk3288/raw/e57382fe021e651a01d3b3f6b3df21a6f5ed19d1/rk3288_vr/bootanimation.zip

Wallpaper

Please check the following 2 commits. One is for HDMI and the other is for DSI.
https://bitbucket.org/TinkerBoard_Android/rk-device-rockchip-rk3288/commits/a5a00b724063b3992a1e6ad711e69e0f4ecd63ce?at=sbc/tinkerboard/asus/Android-6.0.1
https://bitbucket.org/TinkerBoard_Android/rk-device-rockchip-rk3288/commits/0a382ad572b909d758553c43a6b6c929aacbadc6?at=sbc/tinkerboard/asus/Android-6.0.1

How to Rotate screen

Tinker Board can support rotate screen 0/90/180/270 degree. Please reference for the below 2 POSTs.
https://tinker-board.asus.com/forum/thread-574-post-2144.html#pid2144
https://tinker-board.asus.com/forum/thread-574-post-3426.html#pid3426

set the ro.sf.hwrotation in build.prop file

$ adb connect [ip address of tinkerboard]
            $ adb root
            $ adb connect [ip address of tinkerboard]
            $ adb remount
            $ adb pull /system/build.prop .

Then, edit the pulled build.prop file with a text editor. You want to focus on this particular property:
ro.sf.hwrotation

This properties has 4 options

# other possible values: 
            # 0 = Landscape, 90 = Portrait, 180 = reverse Landscape, 270 = Reverse Portrait
            ro.sf.hwrotation=90

Please note that the 180 degree needs to use the image after 20180613.
After editing, push the build.prop back to the device

$ adb push build.prop /system/build.prop

Set the persist.demo.hdmirotation property

# for 0/180 degree
            $ adb shell "setprop persist.demo.hdmirotation landscape"
            
            # for 90/270 degree
            $ adb shell "setprop persist.demo.hdmirotation portrait"

finally reboot the device.

How to connect DSI and CSI cable

  • DSI, CSI cable can be use will no difference, those cable is the same.
  • CSI connect to the middle of tinker board, please refer icon print on board as follows:
  • DSI connect to the boundary of tinker board, please refer icon print on board as follows:
  • DSI panel need extra 5V power. You can USB to supply, or thinker board can output 5V by GPIO PIN, red line is for positive(+),black line is for negative(-) , as follow.
  • You need to notice the direction, when you install cable, the principle is: blue side is face outside of the tinker board.

DSI:

CSI:

How to trigger CSI

  • Use Build-in Camera test tool for operation.
  • Some operations need root permission to execute.
  • Run "sudo su" in terminal command line before operation.

Camera Preview:

Key-in

camHalTest.bin  0

or

camHalTest.bin  1

0 for show preview in DSI

1 for show preview in HDMI

Camera preview will be showed on specific display equipment.

Capture

Each time executing Capture needs to run below cmd to setup environment.

sh  /home/linaro/camera/copy_xml_file.sh

Then key-in capture cmd:

dumpsys

Five pictures will be taken and placed in /tmp/isptune with ppm filename extension.

Build-in file viewer is capable to open and view the image.

Note:

  1. All contents in /tmp/ are volatile and will disappear after reboot.
  2. Disk space for /tmp/ is only ~300MB and one ppm image size is ~22MB, so it can only save ~12 pictures. Make sure to move (mv) image files to external storage before next Capture operation of stress test.

Camera SOP/Camera Config

SETTING UP THE CAMERA HARDWARE

Warning: Cameras are sensitive to static. Earth yourself prior to handling the PCB. A sink tap or similar should suffice if you don't have an earthing strap.

The camera board attaches to the Tinker Board via a 15-way ribbon cable. There are only two connections to make: the ribbon cable needs to be attached to the camera PCB, and to the Tinker Board itself. You need to get the cable the right way round, or the camera will not work. On the camera PCB, the blue backing on the cable should face away from the PCB, and on the Tinker Board it should face towards the Ethernet connection (or where the Ethernet connector would be if you're using a model A).

Although the connectors on the PCB and the Tinker Board are different, they work in a similar way. On the Tinker Board itself, pull up the tabs on each end of the connector. It should slide up easily, and be able to pivot around slightly. Fully insert the ribbon cable into the slot, ensuring it is set straight, then gently press down the tabs to clip it into place. The camera PCB connector also requires you to pull the tabs away from the board, gently insert the cable, then push the tabs back. The PCB connector can be a little more awkward than the one on the Tinker Board itself.

SETTING UP THE CAMERA SOFTWARE

Camera software is default built inside the release image. You don't need to do extra setup.

To test whether the Camera is working, try the following Gstreamer command:

$ gst-launch-1.0 v4l2src ! video/x-raw,format=NV12,width=640,height=480 ! videoconvert ! autovideosink

The display should show a preview from the Camera, whilst displaying various informational messages.

TROUBLESHOOTING

If the Camera Module isn't working correctly, please use below command to check whether the Camera Module be detected by Tinker Board.

$ ls /dev/video*

You will see /dev/video0 /dev/video1 /dev/video2. If not, there are number of things to try:

  1. Is the ribbon cable attached to the Camera Serial Interface (CSI), not the Display Serial Interface (DSI)? The ribbon connector will fit into either port. The Camera port is located near the HDMI connector.
  2. Are the ribbon connectors all firmly seated, and are they the right way round? They must be straight in their sockets.
  3. Is the Camera Module connector, between the smaller black Camera Module itself and the PCB, firmly attached? Sometimes this connection can come loose during transit or when putting the Camera Module in a case. Using a fingernail, flip up the connector on the PCB, then reconnect it with gentle pressure. It engages with a very slight click. Don't force it; if it doesn't engage, it's probably slightly misaligned.
  4. Is your power supply sufficient? The Camera Module adds about 200- 250mA to the power requirements of your Tinker Board.

USING THE CAMERA

The CSI Camera of Tinker Board support IMX219 and OV5647. Here describes the basic usage of Gstreamer and MJPEG-streamer.

Gstreamer

Preview

$ gst-launch-1.0 v4l2src ! videoconvert ! autovideosink 								
            $ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-									
            raw,format=NV12,width=640,height=480 ! videoconvert ! autovideosink	

Capture

$ gst-launch-1.0 v4l2src num-buffers=10 ! video/x-
            raw,format=NV12,width=640,height=480 ! jpegenc ! multifilesink
            location=image_%02d.jpg 
            $ gst-launch-1.0 v4l2src num-buffers=10 ! video/x-
            raw,format=NV12,width=640,height=480 ! jpegenc ! multifilesink 
            location=image.jpg

Recording

$ gst-launch-1.0 v4l2src num-buffers=512 ! video/x-
            raw,format=NV12,width=640,height=480,framerate=30/1 ! queue ! mpph264enc ! queue ! h264parse ! mpegtsmux ! filesink location=/home/linaro/vga.ts

Show Picture

$ gst-launch-1.0 playbin uri=file:///home//linaro//image.jpg 
            $ gst-launch-1.0 filesrc location=image.jpg ! decodebin ! imagefreeze ! 
            autovideosink 

Play Video

$ gst-launch-1.0 playbin video-sink=rkximagesink uri=file:///home/linaro/vga.ts 
            $ gst-launch-1.0 uridecodebin uri=file:///home/linaro/vga.ts ! rkximagesink

MJPG-streamer

Install

$ sudo apt-get update 
            $ sudo apt-get upgrade 
            $ sudo apt-get install subversion libjpeg62-turbo-dev imagemagick 
            $ svn co https://svn.code.sf.net/p/mjpg-streamer/code/ 
            $ cd code/mjpg-streamer 
            $ make 
            $ sudo make install

Start MJPG-streamer

$ cd ~/code/mjpg-streamer $ ./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so -w ./www"

You will see camera preview on your browser http://IP_ADDRESS:8080/?action=stream.

Note: IP_ADDRESS is 127.0.0.1 on Tinker Board browser or use wlan0 address (sudo ifconfig to check) on remote PC browser

Video playback support

Default player – RK player

1. Location:

/usr/lib/arm-linux-gnueabihf/qt5/examples/multimediawidgets/player/player

* You can double click “player” to open it or you also can copy ”player” executed to your Desktop.

2. Please do change setting to DRM mode to have best performance. DRM Setting SOP:

-> Open the player and press “EGL” button on the right-down side.

-> Click “Open” button on the left-down side then choose and add video to playlist

-> Start Playing

3. Support formats and limitations

Browser – Chromium

1. V1.6 has pre-installed Chrome plug-in to enhance performance

2. Please confirm video is with H264 format if you are watching video on video-sharing website out of Youtube.

Drawing and Schematics


GPIO API

Table of Contents

Python

Python is a programming language that lets you work quickly and integrate systems more effectively.
1. Open a terminal and Install dependency package.

sudo apt-get update
            sudo apt-get install python-dev python3-dev

2. Download Python GPIO library*

git clone http://github.com/TinkerBoard/gpio_lib_python.git

3. Navigate to folder

cd gpio_lib_python/

4. Install Python GPIO library for Tinker Board S

5. Reference codes

sudo python setup.py install
            sudo python3 setup.py install 
There're few sample codes under this folder /gpio_lib_python/test

*If get "git command not found", please install git first by apt with follow commands.

sudo apt-get update
            sudo apt-get install git

C

C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.

1. Open a terminal and download C GPIO library*

git clone http://github.com/TinkerBoard/gpio_lib_c.git

2. Navigate to folder

cd gpio_lib_c/

3. Install C GPIO library for Tinker Board S

sudo build

4. Check install success or not

gpio -v
            gpio readall

5. Reference codes

There're few sample codes under this folder

/gpio_lib_c/examples

*If get "git command not found", please install git first by apt with follow commands.

sudo apt-get update
            sudo apt-get install git

To make a simple script create a file with 'nano led.c' and input the following code.

Sample LED blink:

#include 
            #include 
            
            // #define LED 0 matches with ASUS_GPIO 164! This can be checked with command 'sudo gpio readall'.
            #define LED     0
            
            int main (void)
                    {
                    printf ("TB blink\n");
            
                    wiringPiSetup ();
                    pinMode (LED, OUTPUT);
            
                    for (;;)
                    {
                            printf ("led on\n");
                            digitalWrite (LED, HIGH);
                            delay (500);
                            printf ("led off\n");
                            digitalWrite (LED, LOW);
                            delay (500);
                    }
                    return 0;
            }

To run the script run the command:

gcc -o led led.c -lwiringPi

To run the newly compiled led run the command 'sudo led'.

Scratch

1.Install

Step1. Install gpio_lib_python fromhttps://github.com/TinkerBoard/gpio_lib_python
Step2. Install NumPy. ex: pip install numpy
Step3. sh setup.sh

2.Uninstall

sh uninstall.sh

3.Run
Click the Desktop's shortcut.

4.Broadcast Command
Set Pin Mode

config[pin] (in|input) ex: config11in
config[pin] inpulldown|inputpulldown) ex: config11inpulldown
config[pin] (out|output) ex:config11out
config[pin] (pwm|outpwm|outputpwm) ex: config11pwm
Set Output
gpio[pin] (on|high|true) ex: gpio11on
pin[pin] (on|high|true) ex:pin11on
gpio[pin] (off|low|false) ex: gpio11off
pin[pin] (off|low|false) ex: pin11off
gpio[pin] pwm(0-100) ex: gpio11pwm50
pin[pin] pwn(0-100) ex:pin11pwm50

Shell

GPIO can be used direct from the shell:

# echo 223 > /sys/class/gpio/export 
            # echo out > /sys/class/gpio/gpio223/direction 
            # echo 0 > /sys/class/gpio/gpio223/value 
            # echo 1 > /sys/class/gpio/gpio223/value 
            # echo in > /sys/class/gpio/gpio223/direction 
            # cat /sys/class/gpio/gpio223/value
            # echo 223 > /sys/class/gpio/unexport

Status of all GPIO can be read as follows:

sudo gpio readall #need GPIO_C_Library

which returns a table:

Gpio-table.png

GPIO pinout

If you would like to control GPIO's SPI, I2C or serial(UART) with Python, it is recommended to use 3rd party or open source Python library, such as spidev, smbus2 or pySerial.

Gpio-pinout-expanded.png

* We strongly recommend that you regularly backup all data stored in the device. ASUS shall not be liable for any damage to or loss of programs or data stored in the Tinker Board series, and shall not be responsible for data recovery, backup, or any charges arising therefrom.

* In no event shall ASUS be liable for any defect, damage or data loss arising from product repair or replacement.

FAQ

Table of Contents

What is ?

1. What is a Single Board Computer

A single-board computer (SBC) is a complete computer built on a single circuit board, with microprocessor(s), memory, input/output (I/O) and other features required of a functional computer. Single-board computers were made as demonstration or development systems, for educational systems, or for use as embedded computer controllers. Many types of home computers or portable computers integrate all their functions onto a single printed circuit board.

2. What is Tinker Board

Tinker board packs a whole load of exciting feature into a very small space, and at an incredibly competitive price that's barely more than its manufacturing cost. ASUS has identified a clear DIY/maker market trend and we intend to create a big impact with our little board, so we've crammed in loads of tech while keeping our profits to a minimum — it's our little contribution to the DIY world.

Hardware

3. How powerful is the CPU processing

Tinker board features a powerful quad-core ARM Cortex-A17 1.8Ghz processor with a dual-channel DDR3 memory architecture. The performance is almost twice faster than the Raspberry Pi 3, and much higher than most of the SBC boards. For heavy computing loads like OpenCV projects, tinker board should be one of selected platform for your creation.

4. How powerful is the GPU processing

Tinker board has an integrated ARM Mali GPU T760 MP4 supports up to 4K that up-scaled from 1080P, and the GPU also supports H.264/H.265 4K hardware decoder for 4K content display.(update coming soon.)

5. Does the Tinker Board overheat or need a heatsink

The performance of tinker board is much higher than most of the SBC boards, therefore the heat generation is also higher. But tinker board will comes with a passive heatsink to cool down the main SoC temperature.

(Do not touch the SoC or heatsink surface directly when powered tinker board to avoid possible skin burns.)

6. What type of hardware interfaces does the tinker board have

Tinker board has 4 x USB 2.0 ports, 1 x GbE LAN, 1 x 3.5mm audio jack with 192K/24bit audio, MIPI DSI/CSI

7. Can I add additional system memory

The memory was soldered and mounted on the board during manufacturing, and did fully test before shipping out. Even the SoC can supports for higher memory capacity, but we'll strongly recommend you do not swap the memory by yourself.

8. What tinker board's range of temperature operation

The operation temperature is between 30°C ~ 80°C based on the system loadings.

9. Can I connect a keyboard and mouse and use the tinker board as a computer / PC

Yes, with the available operating system for tinker board, you can run tinker board as a linux-based mini system for daily operation or enjoy the media content thru this tiny board.

10. What are the tinker board's dimensions

tinker board measures 85.60mm x 56mm x 21mm (or roughly 3.37" x 2.21" x 0.83").

11. How much does the tinker board weigh

tinker board weighs 55g with the heatsink.

12. Is the tinker board compatible with RasperryPI cases

Yes, tinker board can compatible with most of the chassis for Raspberry Pi.

13. What SoC are used in the tinker board

The tinker board uses the Rockchip RK3288 series. This contains an quad-core ARM cortex A17, running at 1.8Ghz, and a Mali T760 MP4 GPU.

14. What type of Wi-Fi does the tinker board offer

The Wi-Fi solution is AW-NB177NF module, it contains a Realtek RTL8723BS IC, supports the Wi-Fi 802.11 b/g/n, and Bluetooth 4.0 + EDR.

15. What type of Bluetooth does the tinker board offer

Bluetooth 4.0 with EDR

16. Is the Ethernet port / LAN shared with the USB

The Ethernet port is working individually.

17. What type of hardware decoding does the tinker board offer

The GPU supports H.264/H.265 hardware decoder for media contents.(update coming soon)

18. Does the tinker board support an IR blaster

tinker board didn't equip IR transmitter, but tinker board has many GPIO expansion pins allowing this kind of extension.

19. What is the power requirement for the tinker board

tinker board supports 5V/2~2.5A power input, and a capable cable with 24~20 AWG for large current power.

20. Can the tinker board being powered by a battery

Yes, if the battery can supports power output with 5V/2A.

21. What type of microSD cards are supported

The MicroSD slot was from a SDIO 3.0 signal, allowing the MicroSD card with UHS-I

22. What type of SD card is recommended

The MicroSD slot was from a SDIO 3.0 signal, allowing the MicroSD card with UHS-I speed. And we recommend using the card size at least 8GB.

23. What resolutions are supported for the HDMI output

The maximum HDMI output supports up to 4K/30fps, up-scaled from 1080P.

24. What display outs are supported

There're two display interfaces on tinker board, one is HDMI & the other is MIPI DSI.

25. Which HDMI version is supported

HDMI 1.4

26. Is sound supported through HDMI

Yes, the sound output can be worked from HDMI or the 192K/24bit audio jack.

27. What type of audio in and audio out are supported.

The 3.5mm audio jack on tinker board can supports Mic-in and Line-out at the same time.

28. Does the tinker board have a realtime clock feature ( RTC )

No, but there're so many alternatives available on the market.

29. What is the DSI port

The Display Serial Interface (DSI) is a specification by the Mobile Industry Processor Interface (MIPI) alliance, DSI is commonly targeted at LCD and similar display technologies. It defines a serial bus and a communication protocol between the host (source of the image data) and the device (destination of the image data).

30. What model of LCD panel is compatible with the tinker board

The DSI interface is refer to the most popular design from Raspberry Pi, that allows users to connect the 7" display from Raspberry.

31. What else will I need after I purchase a tinker board

Get a keyboard, mouse, USB AC adaptor, a monitor with HDMI, and a micro SD card with 8GB capacity. Then download the OS image from its website, and burn into the micro SD card.

32. Does the tinker board support Expansion shields

Yes, the 40-pin GPIO equipped several signals for expansion. It will works with the GPIO API.

Software

33. How does the tinker board boot

All the files necessary for booting are installed in a FAT32 partition of the SD card. The tinker board has to have an SD card installed to boot from.

34. What OS does the tinker board support

Currently Debian is the only available OS for tinker board.

35. Which LINUX runs on the tinker board

TinkerOS (based on Debian)

36. Does the tinker board support Arduino

Yes

37. How to boot up Tinker Board with Tinker OS - Debian/Android ?

Please refer to the demo videofrom thefollowing links :

Debian:https://www.youtube.com/watch?v=8zXFyQTxM7U&feature=youtu.be

Android:https://www.youtube.com/watch?v=o3p68xhxQyE&feature=youtu.be

Booting from onboard eMMC(for Tinker Board S)

Requirement:

•1 x Micro USB cable with data transfer function

•1 x Tinker Power Supply* or other qualified 5V/3A power supply**

•1 x Monitor with HDMI cable

•1 x Keyboard and Mouse set

*The Tinker Power Supply is purchased seperately.

** Ensure that the cable is able to deliver up to 3A of power current.

  1. Connect the Tinker Board S to a PC witha Micro USB cable, then wait for the PC to recognize the device.
  2. Download the TinkerOS image from the Tinker Board website and burn it into the Tinker Board S by a third-party ISO software, such as Win32DiskImager or Etcher.
  3. Connect the power supply, keyboard, mouse, and monitor to your Tinker Board S to boot up.

Booting from external Micro SD card(for Tinker Board &Tinker Board S)

Requirement:

•1 x Micro SD card with at least 8GB capacity

•1 x Tinker Power Supply* or other qualified 5V/3A power supply**

•1 x Monitor with HDMI cable

•1 x Keyboard and Mouse set

*The Tinker Power Supply is purchased seperately.

** Ensure that the cable is able to deliver up to 3A of power current.

  1. Insert the micro SD card into a Windows® PC
  2. Download the TinkerOS image from the Tinker Board website and burn it into the micro SD card bya third-party ISO software, such as Win32DiskImager or Etcher.
  3. Insert the bootable micro SD card into your Tinker Board, then connect the power supply, keyboard, mouse, and monitor to boot up.

38. How to set your OS Environment in TinkerOS - Android/Debian ?

Please refer to the tutorial videos in the following links for the settings:

Android:

Debian:

QVL