==需求==
*OS: Android (latest version)
*Processor: 4 cores (minimum)
*Coprocessor: STM32F405RGT6 (or equivalent)
*RAM: 2GB
*Storage: 32GB (fast as possible)
*Display: Stretch bar, wide angle, high visibility (480 x 1280px)
*Touchscreen: Capacitive, vandal resistant
*Ports: 1x Power, 1x Ethernet, 1x Audio, 2x USB, 4x RS232
*Dimensions: 70mm x 180mm (estimated)
*Software: RS232 communication buffer (Android app < coprocessor > slot machine / card reader), graceful shutdown, auto-update coprocessor
*Features: 1mm steel case (powder coated), mounting brackets, external battery module


===GPIO Description===

{| class="wikitable" style="text-align:center"
|+USB HOST PWR EN
!Function
!GPIO
!Direction
!Description
|-
|USB OTG PWR EN
|GPIO0_A5
|Output
|Active:H
|-
|USB_HOST_EN_H
|GPIO0_A6
|Output
|Active:H
|-
|5V_Boost_EN_H
|GPIO0_D6
|Output
|Active:H
|-
|}
{| class="wikitable" style="text-align:center"
|+RGMII
!Function
!GPIO
!Direction
!Description
|-
|RGMII_MDC
|GPIO4_B6
|Output
|Active:Edge
|-
|RGMII_MDIO
|GPIO4_B7
|Input/Output
|Active:L
|-
|RGMII_INT
|GPIO3_A7
|Input
|Active:H
|-
|RGMII_RST
|GPIO3_B0
|Output
|Active:L
|-
|RGMII_MCLK
|GPIO4_C1
|Output
|Active:Edge
|-
|RGMII_TXEN
|GPIO4_A6
|Output
|Active:H
|-
|RGMII_TXCLK
|GPIO4_A0
|Output
|Active:Edge
|-
|RGMII_TXD0
|GPIO4_A4
|Output
|Active:H
|-
|RGMII_TXD1
|GPIO4_A5
|Output
|Active:H
|-
|RGMII_TXD2
|GPIO3_D6
|Output
|Active:H
|-
|RGMII_TXD3
|GPIO3_D7
|Output
|Active:H
|-
|RGMII_RXDV
|GPIO4_B1
|Input
|Active:H
|-
|RGMII_RXCLK
|GPIO4_A3
|Input
|Active:Edge
|-
|RGMII_RXD0
|GPIO4_A7
|Input
|Active:H
|-
|RGMII_RXD1
|GPIO4_B0
|Input
|Active:H
|-
|RGMII_RXD2
|GPIO4_A1
|Input
|Active:H
|-
|RGMII_RXD3
|GPIO4_A2
|Input
|Active:H
|-
|}
{| class="wikitable" style="text-align:center"
|+RK809-5 Audio Codec
!Function
!GPIO
!Direction
!Description
|-
|I2S1_MCLK_M0_PMIC
|GPIO1_A2
|Output
|Active:EDGE
|-
|I2S1_SCLK_TX_M0_PMIC
|GPIO1_A3
|Output
|Active:EDGE
|-
|I2S1_LRCK_TX_M0_PMIC
|GPIO1_A5
|Output
|Active:EDGE
|-
|I2S1_SDO0_M0_PMIC
|GPIO1_A7
|Output
|Active:H
|-
|I2S1_SDI0_M0_PMIC
|GPIO1_B3
|Input
|Active:H
|-
|}
{| class="wikitable" style="text-align:center"
|+PMIC RK809-5
!Function
!GPIO
!Direction
!Description
|-
|PMIC_INT_L
|GPIO0_A3
|Input
|Active:L
|-
|PMIC_SLEEP_H
|GPIO0_A2
|Output
|Active:H
|-
|}
{| class="wikitable" style="text-align:center"
|+eMMC 64GB
!Function
!GPIO
!Direction
!Description
|-
|eMMC_D0
|GPIO1_B4
|I/0
|Active:EDGE
|-
|eMMC_D1
|GPIO1_B5
|I/0
|Active:EDGE
|-
|eMMC_D2
|GPIO1_B6
|I/0
|Active:EDGE
|-
|eMMC_D3
|GPIO1_B7
|I/0
|Active:EDGE
|-
|eMMC_D4
|GPIO1_C0
|I/0
|Active:EDGE
|-
|eMMC_D5
|GPIO1_C1
|I/0
|Active:EDGE
|-
|eMMC_D6
|GPIO1_C2
|I/0
|Active:EDGE
|-
|eMMC_D7
|GPIO1_C3
|I/0
|Active:EDGE
|-
|eMMC_CMD
|GPIO1_C4
|0utput
|Active:EDGE
|-
|eMMC_CLK
|GPIO1_C5
|0utput
|Active:EDGE
|-
|eMMC_DATA_STROBE
|GPIO1_C6
|0utput
|Active:H
|-
|eMMC_nRST
|GPIO1_C7
|0utput
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+TF Card
!Function
!GPIO
!Direction
!Description
|-
|SD0_D0
|GPIO1_D5
|I/0
|Active:EDGE
|-
|SD0_D1
|GPIO1_D6
|I/0
|Active:EDGE
|-
|SD0_D2
|GPIO1_D7
|I/0
|Active:EDGE
|-
|SD0_D3
|GPIO2_A0
|I/0
|Active:EDGE
|-
|SD0_CMD
|GPIO2_A1
|0utput
|Active:EDGE
|-
|SD0_CLK
|GPIO2_A2
|0utput
|Active:EDGE
|-
|SD0_DET
|GPIO0_A4
|Input
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+SDIO WIFI/BT 8223A-SR
!Function
!GPIO
!Direction
!Description
|-
|SD1_D0
|GPIO2_A3
|I/0
|Active:EDGE
|-
|SD1_D1
|GPIO2_A4
|I/0
|Active:EDGE
|-
|SD1_D2
|GPIO2_A5
|I/0
|Active:EDGE
|-
|SD1_D3
|GPIO2_A6
|I/0
|Active:EDGE
|-
|SD1_CMD
|GPIO2_A7
|0utput
|Active:EDGE
|-
|SD1_CLK
|GPIO2_B0
|0utput
|Active:EDGE
|-
|BT_UART1_RX_M0
|GPIO2_B3
|Input
|Active:L
|-
|BT_UART1_TX_M0
|GPIO2_B4
|Output
|Active:L
|-
|BT_UART1_RTS_M0
|GPIO2_B5
|Input
|Active:L
|-
|BT_UART1_CTS_M0
|GPIO2_B6
|Output
|Active:L
|-
|BT_PCM_CLK
|GPIO2_C2
|Output
|Active:EDGE
|-
|BT_PCM_SYNC
|GPIO2_C3
|Output
|Active:EDGE
|-
|BT_PCM_DO
|GPIO2_C4
|Output
|Active:EDGE
|-
|BT_PCM_DI
|GPIO2_C5
|Input
|Active:EDGE
|-
|WL_REG_ON
|GPIO2_B1
|Output
|Active:H
|-
|WL_HOST_WAKE
|GPIO2_B2
|Input
|Active:H
|-
|BT_WAKE
|GPIO2_C0
|Output
|Active:H
|-
|BT_HOST_WAKE
|GPIO2_C1
|Input
|Active:H
|-
|BT_nRST
|GPIO2_B7
|Output
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+Headphone Hook
!Function
!GPIO
!Direction
!Description
|-
|HP HOOK
|SARADC_VIN1
|Input
|Active:ADC
|-
|HP DET
|GPIO4_B2
|Input
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+TFT LCD MIPI DSI TX1
!Function
!GPIO
!Direction
!Description
|-
|LCD_PWR_EN
|GPIO0_C5
|Output
|Active:H
|-
|LCD_BACKLIGHT_PWM
|GPIO0_C4
|Output
|Active:H
|-
|LCD_RST
|GPIO0_D4
|Output
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+UART
!Function
!GPIO
!Direction
!Description
|-
|UART3_TX_M1
|GPIO3_B7
|Output
|Active:L
|-
|UART3_RX_M1
|GPIO3_C0
|Input
|Active:L
|-
|UART4_TX_M1
|GPIO3_B2
|Output
|Active:L
|-
|UART4_RX_M1
|GPIO3_B1
|Input
|Active:L
|-
|UART9_TX_M1
|GPIO4_C5
|Output
|Active:L
|-
|UART9_RX_M1
|GPIO4_C6
|Input
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+PWR STAT TO MCU
!Function
!GPIO
!Direction
!Description
|-
|PWR STAT
|GPIO3_D5
|Output
|Active:H
|-
|}
{| class="wikitable" style="text-align:center"
|+TP Panel
!Function
!GPIO
!Direction
!Description
|-
|TP_RST
|GPIO0_B6
|Output
|Active:H
|-
|TP_INT
|GPIO0_B5
|Input
|Active:L
|-
|}
{| class="wikitable" style="text-align:center"
|+I2C TP GT911 I2C1
!Function
!GPIO
!Direction
!Description
|-
|I2C2_SCL_M1
|GPIO4_B5
|Output
|Active:EDGE
|-
|I2C2_SDA_M1
|GPIO4_B4
|I/O
|Active:EDGE
|-
|I2C0_SCL
|GPIO0_B1
|Output
|Active:EDGE
|-
|I2C0_SDA
|GPIO0_B2
|I/O
|Active:EDGE
|-
|I2C1_SCL
|GPIO0_B3
|Output
|Active:EDGE
|-
|I2C1_SDA
|GPIO0_B4
|I/O
|Active:EDGE
|-
|}
{| class="wikitable" style="text-align:center"
|+RTC
!Function
!GPIO
!Direction
!Description
|-
|RTC_I2C5_SCL
|GPIO3_B3
|Output
|Active:EDGE
|-
|RTC_I2C5_SDA
|GPIO3_B4
|I/O
|Active:EDGE
|-
|}
{| class="wikitable" style="text-align:center"
|+GPIO INPUT
!Function
!GPIO
!Direction
!Description
|-
|GPIO IN1
|GPIO3_D4
|Input
|Active:L
|-
|GPIO IN2
|GPIO2_D0
|Input
|Active:L
|-
|GPIO IN3
|GPIO2_D1
|Input
|Active:L
|-
|GPIO IN4
|GPIO2_D2
|Input
|Active:L
|-
|GPIO IN5
|GPIO2_D3
|Input
|Active:L
|-
|}

==Building Android==

===Requirements===
* Host OS: Debian 11 (bullseye) or above, Ubuntu 20.04 or above
* RAM: 32GB or above
* Free space on storage: 200GiB or above

Install packages needed for compiling:
<pre>
sudo apt-get install build-essential flex bison genext2fs
</pre>

===How to build===
<pre>
tar -xf rk3568-android12-slotmachine.tar.gz

cd rk3568-android12-slotmachine
. setenv-slotmachine.sh
./build-slotmachine.sh -FMu
</pre>

The image output path is rockdev/Image-aosp_novotech_slotmachine/

===How to upgrade image to eMMC===
Set device to recovery mode, connect device to PC, then use commands below:
<pre>
chmod +x RKTools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool_v2.4/upgrade_tool
RKTools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool_v2.4/upgrade_tool uf rockdev/Image-aosp_novotech_slotmachine/update.img
</pre>