ODROID-X,X2,Q Hardware manual

The ODROID-X is a 3.5“ floppy disk sized single-board computer developed in South Korea by Hardkernel Co.,LTD. You can plug in your TV and keyboard and many other devices.

The ODROID-X2 is a upgrade version of ODROID-X. It comes with 1.7Ghz CPU and 2GByte DRAM. Other specification is exactly same as ODROID-X.

The ODROID-Q is a potential development device for powerful developers with 3G MODEM, GPS, Dual band WiFi, and zillion of sensors. Both are based on Samsung Electronics Exynos4412 system on chip. The ODROID-X board has been available to the public at US$ 129. The ODROID-X2 is US$135. It is a community supported development platform. We want to see it being used by developers.

Features
Product ODROID-X ODROID-Q
Processor CortexA9 Quad
AP Exynos4412
GPU Mali-400
POP memory Samsung 8Gb LPDDR2 800Mbps
Storage support optional eMMC 16GB , optional SD builtin eMMC 16GB, optional microSD
PMIC MAX77686
Audio codec MAX98090 MAX98095
Debug support USB-UART based CP2104 JTAG , USB-UART based CP2104
Base PCB spec 1.2T 4layer 94 X 90mm 1T Buildup A type 6layer 259 X 105mm
Camera optional MIPI 5M pixel builtin front parallel 1.3M pixel and rear MIPI 5M pixel
Video HDMI, RGB, optional RGB to LVDS board HDMI, builtin 10.1” 1280×800 LCD
Power source optional 5V 2A power adapter builtin 5V 2A power adapter
Audio outputs 3.5mm headphone jack, Micro-D type HDMI
Audio inputs external microphone builtin microphone
Connectivity 10/100Mbps Ethernet (Auto-MDIX) WiFi based BCM4330, Erisson HSDPA+ Modem
USB device 1 Micro USB
USB 2.0 external host ports 6 (4 proved by LAN9514, 2 proved by USB3503) 1 (provided by USB3503)
Real-time-clock supported
Expansion 2.54mm 50p connector 1.27mm 30p connector
Others

Exynos4412 is a 32-bit RISC cost-effective, low power, performance optimized Cortex-A9 Quad Core based micro-processor solution for smart phone applications. It has been built to provide optimized hardware performance for the mobile telecommunication services and general applications on smart phones. Exynos4412 adopts a 64-bit/128-bit internal bus architecture and many powerful hardware accelerators for different tasks. These tasks, for example motion video processing, image signal processing, display control and scaling. An integrated Multi Format Codec (MFC) supports encoding and decoding of MPEG-2/4, H.263, H.264 and decoding of VC1. The hardware encoder/decoder supports real-time video conferencing and digital TV out. The memory system has dedicated DRAM ports and a static memory port. The dedicated DRAM ports support the LPDDR2 interface for high bandwidth. The static memory port supports NOR flash and ROM type external memory and components.

To reduce the total system cost and enhance the overall functionality, Exynos4412 includes many hardware peripherals, such as a TFT 24-bit true color LCD controller, camera interface, MIPI DSI, CSI-2, a system manager for power management, embedded GPS and GLONASS, MIPI slimbus interface, MIPI HSI, four UARTs, 24-channel DMA, timers, general I/O Ports, three I2S, S/PDIF, eight IIC-BUS interfaces, three HS-SPI, USB Host 2.0, and USB 2.0 devices operating at high speed (480Mbps), two USB HSIC, four SD Host and a high-speed Multimedia Card interface, a chip to chip interface, and four PLLs for clock generation. A package on package (POP) option with MCP is available for small form factor applications.

Memory

Exynos4412 has 1GB low power DDR memory. Exynos4412-Prime has 2GB low power DDR memory.

Memory Map

Base Address Limit Address Size Description
0x0000_0000 0x0001_0000 64 KB iROM
0x0200_0000 0x0201_0000 64 KB IROM (mirror of 0x0 to 0x10000)
0x0202_0000 0x0206_0000 256 KB IRAM
0x0300_0000 0x0302_0000 128 KB Data memory or general purpose for Samsung Reconfigurable Processor SRP
0x0302_0000 0x0303_0000 64 KB I-cache or general purpose for SRP
0x0303_0000 0x0303_9000 36 KB Configuration memory (write only) for SRP
0x0381_0000 0x0383_0000 - AudioSS'w SFR region
0x0400_0000 0x0500_0000 16 MB Bank0 of Static Read Only Memory Controller (SMC) (16-bit only)
0x0500_0000 0x0600_0000 16 MB Bank1 of SMC
0x0600_0000 0x0700_0000 16 MB Bank2 of SMC
0x0700_0000 0x0800_0000 16 MB Bank3 of SMC
0x0800_0000 0x0C00_0000 64 MB Reserved
0x0C00_0000 0x0CD0_0000 - Reserved
0x0CE0_0000 0x0D00_0000 - SFR region of Nand Flash Controller (NFCON)
0x1000_0000 0x1400_0000 - SFR region
0x4000_0000 0xA000_0000 1.5 GB Memory of Dynamic Memory Controller (DMC)-0
0x1000_0000 0x0000_0000 1.5 GB Memory of DMC-1

MAX77686 has 9 buck converters and 26 LDOs.

50pin x 8pcs B2B connectors B2B connector specification : b2b_spec.pdf

Note that we don't use J7 and J8 in ODROID-X/ODROID-X2/ODROID-Q.

B2B pin map of Exynos4412 CPU board

pin#Pin nameFunction-XFunction-QCMT
J1-1-GNDGND-
J1-2-GNDGND-
J1-3XVVD_16LCD_VD_16LCD_VD_16-
J1-4XVVD_22LCD_VD_22LCD_VD_22-
J1-5XVVD_13LCD_VD_13LCD_VD_13-
J1-6XVVD_1LCD_VD_1LCD_VD_1-
J1-7XVVD_4LCD_VD_4LCD_VD_4-
J1-8XVVD_9LCD_VD_9LCD_VD_9-
J1-9XVVSYNC_LDIVSYNC_LDIGPF3_4-
J1-10XVVD_23LCD_VD_23LCD_VD_23-
J1-11XVVD_14LCD_VD_14LCD_VD_14-
J1-12-GNDGND-
J1-13-GNDGND-
J1-14XVVD_5LCD_VD_5LCD_VD_5-
J1-15XVVD_10LCD_VD_10LCD_VD_10-
J1-16XVVDENLCD_VDENLCD_VDEN-
J1-17XVVD_20LCD_VD_20LCD_VD_20-
J1-18XVVD_7LCD_VD_7LCD_VD_7-
J1-19XVVD_8LCD_VD_8LCD_VD_8-
J1-20XVVD_2LCD_VD_2LCD_VD_2-
J1-21XVVD_21LCD_VD_21LCD_VD_21-
J1-22XVVD_19LCD_VD_19LCD_VD_19-
J1-23OUT25--PMIC
J1-24OUT13--PMIC
J1-25-GNDGND-
J1-26-GNDGND-
J1-27XVVD_15LCD_VD_15LCD_VD_15-
J1-28XVVD_0LCD_VD_0LCD_VD_0-
J1-29XVVCLKLCD_VCLKLCD_VCLK-
J1-30XVVD_18LCD_VD_18LCD_VD_18-
J1-31XVSYS_OESYS_OEGPF3_5-
J1-32XVVD_11LCD_VD_11LCD_VD_11-
J1-33XVVSYNCLCD_VSYNCLCD_VSYNC-
J1-34XVVD_6LCD_VD_6LCD_VD_6-
J1-35XVHSYNCLCD_HSYNCLCD_HSYNC-
J1-36XVVD_12LCD_VD_12LCD_VD_12-
J1-37XVVD_3LCD_VD_3LCD_VD_3-
J1-38XVVD_17LCD_VD_17LCD_VD_17-
J1-39XSBUSCLKSLIMbusClkSLIMbusClk-
J1-40XSBUSDATASLIMbusDataSLIMbusData-
J1-41-GNDGND-
J1-42XHDMITX2PHDMI_TX2PHDMI_TX2P-
J1-43XHDMITX2NHDMI_TX2NHDMI_TX2N-
J1-44XHDMITX1PHDMI_TX1PHDMI_TX1P-
J1-45XHDMITX1NHDMI_TX1NHDMI_TX1N-
J1-46XHDMITX0PHDMI_TX0PHDMI_TX0P-
J1-47XHDMITX0NHDMI_TX0NHDMI_TX0N-
J1-48XHDMITXCPHDMI_TXCPHDMI_TXCP-
J1-49XHDMITXCNHDMI_TXCNHDMI_TXCN-
J1-50-GNDGND-
J2-1-GNDGND--
J2-2XI2S2LRCKGPC1_2GPC1_2-
J2-3XI2S2SDO-GPC1_4-
J2-4XI2S1SCLK-GPC0_0-
J2-5XI2S2SDI---
J2-6XI2S2CDCLK-GPC1_1-
J2-7XI2S1LRCK-GPC0_2-
J2-8XI2S1CDCLK-GPC0_1-
J2-9XI2S1SDO---
J2-10XI2S1SDI---
J2-11XI2C1SCLI2C_1_SCLI2C_1_SCL-
J2-12XURXD_1UART_1_RXDUART_1_RXD-
J2-13XSPICLK_0-I2C_4_SDA-
J2-14-GNDGND-
J2-15-GNDGND-
J2-16-GNDGND-
J2-17XPWMTOUT_2-I2C_7_SDA-
J2-18XPWMTOUT_3-I2C_7_SCL-
J2-19XSPIMOSI_1SPI_1_MOSIGPB_7-
J2-20XURXD_2-GPA1_0-
J2-21XSPIMOSI_0I2C_5_SCLI2C_5_SCL-
J2-22XUTXD_1UART_1_TXDUART_1_TXD-
J2-23XI2C0SDA---
J2-24XSPICSN_1SPI_1_CSNGPB_5-
J2-25-GNDGND-
J2-26-GNDGND-
J2-27XURTSN_2GPA1_3GPA1_3-
J2-28XSPICSN_0-I2C_4_SCL-
J2-29XUTXD_0-UART_0_TXD-
J2-30XPWMTOUT_0-TOUT_0-
J2-31XSPICLK_1SPI_1_CLKGPB_4-
J2-32XPWMTOUT_1LCD_PWMLCD_PWM-
J2-33XURXD_3UART_3_RXDUART_3_RXD-
J2-34XI2C0SCL---
J2-35-GNDGND-
J2-36-GNDGND-
J2-37-GNDGND-
J2-38XURTSN_0-UART_0_RTSn-
J2-39XSPIMISO_0I2C_5_SDAI2C_5_SDA-
J2-40XSPIMISO_1SPI_1_MISOGPB_6-
J2-41XUCTSN_2GPA1_2GPA1_2-
J2-42XI2C1SDAI2C_1_SDAI2C_1_SDA-
J2-43XUCTSN_1I2C_2_SDAI2C_2_SDA-
J2-44XUCTSN_0-UART_0_CTSn-
J2-45XUTXD_3UART_3_TXDUART_3_TXD-
J2-46XURXD_0-UART_0_RXD-
J2-47XURTSN_1I2C_2_SCLI2C_2_SCL-
J2-48XUTXD_2GPA1_1GPA1_1-
J2-49XI2S2SCLKGPC1_0GPC1_0-
J2-50-GNDGND-
J3-1-GNDGND-
J3-2-GNDGND-
J3-3XI2S0SDO_1I2S_0_SDO_1I2S_0_SDO_1-
J3-4XI2S0SCLKI2S_0_SCLKI2S_0_SCLK-
J3-5XI2S0SDO_0I2S_0_SDO_0I2S_0_SDO_0-
J3-6XI2S0SDO_2I2S_0_SDO_2I2S_0_SDO_2-
J3-7XI2S0CDCLKI2S_0_CDCLK2S_0_CDCLK-
J3-8XI2S0LRCKI2S_0_LRCKI2S_0_LRCK-
J3-9XI2S0SDII2S_0_SDII2S_0_SDI-
J3-10P32KH--PMIC
J3-1132KHCP--PMIC
J3-12PWRON--PMIC
J3-13JIGONB--PMIC
J3-14ACOKB--PMIC
J3-15MRSTB2--PMIC
J3-16MRSTB1--PMIC
J3-17XOM_1XOM_1XOM_1-
J3-18XOM_5XOM_5XOM_5-
J3-19XOM_3XOM_3XOM_3-
J3-20XOM_2XOM_2XOM_2-
J3-21XOM_4XOM_4XOM_4-
J3-22XOM_0XOM_0XOM_0-
J3-23-GNDGND-
J3-24-GNDGND-
J3-25-GNDGND-
J3-26-BATTBATT-
J3-27-BATTBATT-
J3-28-BATTBATT-
J3-29OUT4--PMIC
J3-30OUT25--PMIC
J3-31OUT5--PMIC
J3-32OUT26--PMIC
J3-33OUT19--PMIC
J3-34OUT23--PMIC
J3-35OUT12--PMIC
J3-36OUT24--PMIC
J3-37OUT16--PMIC
J3-38OUT20--PMIC
J3-39OUT9--PMIC
J3-40OUT11--PMIC
J3-41BUCK8--PMIC
J3-42BUCK8--PMIC
J3-43BUCK8--PMIC
J3-44OUT10--PMIC
J3-45OUT13--PMIC
J3-46BUCK9--PMIC
J3-47BUCK9--PMIC
J3-48-GNDGND-
J3-49-GNDGND-
J3-50-GNDGND-
J4-1-GNDGND-
J4-2-GNDGND-
J4-3OUT22--PMIC
J4-4OUT21--PMIC
J4-5XMMC3CMD-SD_3_CMD-
J4-6XMMC3CLK-SD_3_CLK-
J4-7XMMC3DATA_1-SD_3_DATA_1-
J4-8XMMC3CDN-GPK3_2-
J4-9XMMC3DATA_2-SD_3_DATA_2-
J4-10XMMC3DATA_3-SD_3_DATA_3-
J4-11XMMC3DATA_0-SD_3_DATA_0-
J4-12PWRREQPMICPMIC-
J4-13-VDD33_BYPUSB_HUB-
J4-14-OCS_NUSB_HUB-
J4-15-PRTPWRUSB_HUB-
J4-16-GNDGND-
J4-17-USBDN2_DMUSB_HUB-
J4-18-USBDN2_DPUSB_HUB-
J4-19-GNDGND-
J4-20-USBDN3_DMUSB_HUB-
J4-21-USBDN3_DPUSB_HUB-
J4-22-GNDGND-
J4-23-USBDN1_DMUSB_HUB-
J4-24-USBDN1_DPUSB_HUB-
J4-25-GNDGND-
J4-26-GNDGND-
J4-27XMMC1DATA_1SD_1_DATA_1SD_1_DATA_1-
J4-28XMMC1CLK---
J4-29XMMC1DATA_2SD_1_DATA_2SD_1_DATA_2-
J4-30XMMC1CDNSD_1_CDnSD_1_CDn-
J4-31XMMC1DATA_0SD_1_DATA_0SD_1_DATA_0-
J4-32XMMC1CMD---
J4-33XMMC1DATA_3SD_1_DATA_3SD_1_DATA_3-
J4-34XMMC0DATA_0SD_0_DATA_0SD_0_DATA_0-
J4-35XMMC0DATA_1SD_0_DATA_1SD_0_DATA_1-
J4-36XMMC0CLKSD_0_CLKSD_0_CLK-
J4-37XMMC0DATA_2SD_0_DATA_2SD_0_DATA_2-
J4-38XMMC0DATA_3SD_0_DATA_3SD_0_DATA_3-
J4-39XMMC0CDN-GPK0_1-
J4-40XMMC0CMDSD_0_CMDSD_0_CMD-
J4-41XMMC2DATA_3SD_2_DATA_3SD_2_DATA_3-
J4-42XMMC2CLKSD_2_CLKSD_2_CLK-
J4-43XMMC2DATA_1SD_2_DATA_1SD_2_DATA_1-
J4-44XMMC2DATA_2SD_2_DATA_2SD_2_DATA_2-
J4-45XMMC2CMDSD_2_CMDSD_2_CMD-
J4-46XMMC2DATA_0SD_2_DATA_0SD_2_DATA_0-
J4-47XMMC2CDNSD_2_CDnSD_2_CDn-
J4-48-BATTBATT-
J4-49-BATTBATT-
J4-50-BATTBATT-
J5-1-GNDGND-
J5-2-GNDGND-
J5-3XHSICDATA_1XhsicDATA_1XhsicDATA_1-
J5-4XHSICSTROBE_1XhsicSTROBE_1XhsicSTROBE_1-
J5-5-GNDGND-
J5-6XEINT_25GPX3_1GPX3_1-
J5-7XEINT_23-GPX2_7-
J5-8XEINT_30WAKEUP_INT3_5WAKEUP_INT3_5-
J5-9XEINT_8-GPX1_0-
J5-10XEINT_14GPX1_6GPX1_6-
J5-11XEINT_13-GPX1_5-
J5-12XEINT_0GPX0_0GPX0_0-
J5-13XEINT_27WAKEUP_INT3_3WAKEUP_INT3_3-
J5-14XEINT_31WAKEUP_INT3_7WAKEUP_INT3_7-
J5-15XEINT_9-GPX1_1-
J5-16XEINT_22---
J5-17XEINT_17GPX2_1GPX2_1-
J5-18XEINT_16-WAKEUP_INT2_0-
J5-19XEINT_10-WAKEUP_INT1_2-
J5-20XEINT_12WAKEUP_INT1_4WAKEUP_INT1_4--
J5-21XNRSTOUT---
J5-22XEINT_15-WAKEUP_INT1_7-
J5-23XNWRESET---
J5-24-GNDGND-
J5-25-GNDGND-
J5-26-GNDGND-
J5-27XEINT_1-GPX0_1-
J5-28XEINT_2-GPX0_2-
J5-29XEINT_5-GPX0_5-
J5-30XEINT_4-WAKEUP_INT0_4-
J5-31XEINT_7-GPX0_7-
J5-32XEINT_6-GPX0_6-
J5-33XUHOSTOVERCUR---
J5-34XJTMS-XjTMS-
J5-35XEINT_3GPX0_3GPX0_3-
J5-36XEINT_18GPX2_2GPX2_2-
J5-37XJTRSTN-XjTRSTn-
J5-38XUHOSTPWREN---
J5-39XJTDI-XjTDI-
J5-40XJTCK-XjTCK-
J5-41XJTDO-XjTDO-
J5-42-GNDGND-
J5-43XUOTGDPXuotgDPXuotgDP-
J5-44XUOTGDMXuotgDMXuotgDM-
J5-45-GNDGND-
J5-46XUOTGDRVVBUSXuotgDRVVBUSXuotgDRVVBUS-
J5-47XNRESET-XnRESET-
J5-48XUOTGVBUSXuotgVBUSXuotgVBUS-
J5-49XUOTGIDXuothIDXuothID-
J5-50-VIOPMIC-
J6-1-GNDGND-
J6-2XISPMCLKCAM_BAY_MCLKCAM_BAY_MCLK-
J6-3ENB8--PMIC
J6-4ENL21--PMIC
J6-5ENL20--PMIC
J6-6XADCAIN_3XadcAIN_3XadcAIN_3-
J6-7XADCAIN_0-XadcAIN_0-
J6-8XADCAIN_2XadcAIN_2XadcAIN_2-
J6-9XADCAIN_1-XadcAIN_1-
J6-10-GNDGND-
J6-11XCIFIELD-CAM_A_FIELD-
J6-12XCIDATA_3-CAM_A_DATA_3-
J6-13XCIVSYNC-CAM_A_VSYNC-
J6-14XCICLKENB-CAM_A_CLKOUT-
J6-15XCIDATA_6-CAM_A_DATA_6-
J6-16XCIDATA_0-CAM_A_DATA_0-
J6-17XCIDATA_2-CAM_A_DATA_2-
J6-18XCIPCLK-CAM_A_PCLK-
J6-19XCIDATA_7-CAM_A_DATA_7-
J6-20XCIDATA_4-CAM_A_DATA_4-
J6-21XCIDATA_1-CAM_A_DATA_1-
J6-22XCIDATA_5-CAM_A_DATA_5-
J6-23XCIHREF-CAM_A_HREF-
J6-24-GNDGND-
J6-25-GNDGND-
J6-26-GNDGND-
J6-27OUT17--PMIC
J6-28XMIPIMDN0---
J6-29XMIPIMDP0---
J6-30XMIPIMDN1---
J6-31XMIPIMDP1---
J6-32XMIPIMDNCLK---
J6-33XMIPIMDPCLK---
J6-34XMIPIMDN2---
J6-35XMIPIMDP2---
J6-36XMIPIMDN3---
J6-37XMIPIMDP3---
J6-38-GNDGND-
J6-39XMIPISDN0MIPI_SDN_0MIPI_SDN_0-
J6-40XMIPISDP0MIPI_SDP_0MIPI_SDP_0-
J6-41XMIPISDN1MIPI_SDN_1MIPI_SDN_1-
J6-42XMIPISDP1MIPI_SDP_1MIPI_SDP_1-
J6-43XMIPISDNCLKMIPI_CLK_RX_NMIPI_CLK_RX_N-
J6-44XMIPISDPCLKMIPI_CLK_RX_PMIPI_CLK_RX_P-
J6-45XMIPISDN2---
J6-46XMIPISDP2---
J6-47XMIPISDN3---
J6-48XMIPISDP3---
J6-49-VIOPMIC-
J6-50-GNDGND-
J7-1XM0DATA_13---
J7-2XM0CSN_3---
J7-3XM0DATA_9---
J7-4XM0FALE---
J7-5XM0ADDR_7---
J7-6XM0DATA_7---
J7-7XMOADDR_1---
J7-8XM0DATA_4---
J7-9XM0DATA_8---
J7-10XM0FRNB_0---
J7-11XM0FRNB_1---
J7-12XM0OEN---
J7-13XM0DATA_12---
J7-14XM0ADDR_3---
J7-15XM0ADDR_13---
J7-16XM0ADDR_14---
J7-17XM0ADDR_9---
J7-18XM0ADDR_10---
J7-19XM0ADDR_8---
J7-20XM0ADDR_11---
J7-21XM0ADDR_12---
J7-22XM0ADDR_15---
J7-23XM0DATA_11---
J7-24XM0DATA_15---
J7-25-GNDGND-
J7-26-GNDGND-
J7-27XM0DATA_5---
J7-28XM0BEN_1---
J7-29XM0BEN_0---
J7-30XM0FRNB_3---
J7-31XM0DATA_RDN---
J7-32XM0ADDR_5---
J7-33XM0CSN_2---
J7-34XM0FCLE---
J7-35XM0ADDR_0---
J7-36XM0FRNB_2---
J7-37XM0DATA_2---
J7-38XM0DATA_14---
J7-39XM0DATA_1---
J7-40XM0ADDR_2---
J7-41XM0DATA_3---
J7-42XM0DATA_10---
J7-43XM0WEN---
J7-44XM0DATA_0---
J7-45XM0WAITN---
J7-46XM0ADDR_6---
J7-47XM0ADDR_4---
J7-48XM0CSN_1---
J7-49XM0CSN_0---
J7-50XM0DATA_6---
J8-1-GNDGND-
J8-2OUT18--PMIC
J8-3XISPRGB_12---
J8-4-GNDGND-
J8-5XISPGP2---
J8-6XISPVSYNC---
J8-7XISPGP3---
J8-8OUT14--PMIC
J8-9-GNDGND-
J8-10XISPGP5---
J8-11XISPGP8---
J8-12XISPI2C1SDA---
J8-13XISPRGB_2---
J8-14XISPGP0---
J8-15XISPRGB_6---
J8-16XISPRGB_1---
J8-17XISPRGB_3---
J8-18-GNDGND-
J8-19XMIPI2LSDP1---
J8-20XMIPI2LSDN1---
J8-21XMIPI2LSDPCLK---
J8-22XMIPI2LSDNCLK---
J8-23XMIPI2LSDP0---
J8-24XMIPI2LSDN0---
J8-25-GNDGND-
J8-26-GNDGND-
J8-27XISPRGB_9---
J8-28XISPRGB_0---
J8-29XISPRGB_4---
J8-30XISPRGB_11---
J8-31XISPRGB_10---
J8-32XISPI2C1SCL---
J8-33XISPSPICSN---
J8-34XISPRGB_5---
J8-35XISPSPICLK---
J8-36XISPSPIMOSI---
J8-37XISPGP7---
J8-38XISPSPIMISO---
J8-39XISPI2C0SDA---
J8-40XISPGP6---
J8-41XISPGP4---
J8-42XISPPCLK---
J8-43XISPHSYNC---
J8-44XISPGP1---
J8-45XISPGP9---
J8-46XISPRGB_8---
J8-47XISPI2C0SCL---
J8-48XISPRGB_13---
J8-49XISPRGB_7---
J8-50-GNDGND-

Gerber Data of B2B connector for custom base board

The ODROID-X has quite a few expansion header pins - much like beagle board. Expansion header of ODROID-X has a 24bit RGB IF, a Hardware SPI, an I2C, a PWM, an UART and two ADCs. All GPIOs of the expansion port can be used as input, output, interrupts, and special functions except for the ADCs.

ODROID-X/X2

PIN# Expansion net name for ODROID-X Pin name of Exynos4412 Function Description
1 T_INT XEINT[27] GPX3[3]/WAKEUP_INT3[3]/KP _ROW[11]/ALV_DBG[23]
2 BL_EN UXuRTSn[2] GPA1[3]/UART_2_RTSn/I2C_3_SCL
3 SDA Xi2c1SDA GPD1[2]/I2C_1_SDA
4 T_RST XEINT[17] GPX2[1]/WAKEUP_INT2[1]/KP _ROW[1]/ALV_DBG[13]
5 SCL IXi2c1SCL GPD1[3]/I2C_1_SCL
6 SPI_1.CLK XspiCLK[1] GPB[4]/SPI_1_CLK/IEM_SCLK
7 T_SCL XspiMOSI[0] GPB[3]/SPI_0_MOSI/I2C_5_SCL
8 T_SDA XspiMISO[0] GPB[2]/SPI_0_MISO/I2C_5_SDA
9 XE.INT12 XEINT[12] GPX1[4]/WAKEUP_INT1[4]/KP _COL[4]/ALV_DBG[8]
10 SPI_1.CSN XspiCSn[1] GPB[5]/SPI_1_nSS/IEM_SPWI
11 SPI_1.MOSI XspiMOSI[1] GPB[7]/SPI_1_MOSI
12 VDDQ_LCD LDO25 of MAX77686
13 PWM_BRT XpwmTOUT[1] GPD0[1]/TOUT_1/LCD_PWM
14 RXD XuRXD[3] GPA1[4]/UART_3_RXD/UART_AUDIO _RXD
15 SPI_1.MISO XspiMISO[1] GPB[6]/SPI_1_MISO
16 TXD XuTXD[3] GPA1[1]/UART_3_TXD/UART_AUDIO _TXD
17 VD19 XvVD[19] GPF2[7]/LCD_VD[19]
18 VD21 XvVD[21] GPF3[1]/LCD_VD[21]
19 VD2 XvVD[2] GPF0[6]/LCD_VD[2]
20 VD8 XvVD[8] GPF1[4]/LCD_VD[8]
21 VD15 XvVD[15] GPF2[3]/LCD_VD[15]
22 VD0 XvVD[0] GPF0[4]/LCD_VD[0]
23 VCLK XvVCLK GPF0[3]/LCD_VCLK
24 VD7 XvVD[7] GPF1[3]/LCD_VD[7]
25 VD18 XvVD[18] GPF2[6]/LCD_VD[18]
26 VD11 XvVD[11] GPF1[7]/LCD_VD[11]
27 VSYNC XvVSYNC GPF0[1]/LCD_VSYNC
28 VD6 XvVD[6] GPF1[2]/LCD_VD[6]
29 VDEN XvVDEN GPF0[2]/LCD_VDEN
30 VD20 XvVD[20] GPF3[0]/LCD_VD[20]
31 HSYNC XvHSYNC GPF0[0]/LCD_HSYNC
32 GND Ground
33 VD3 XvVD[3] GPF0[7]/LCD_VD[3]
34 VD12 XvVD[12] GPF2[0]/LCD_VD[12]
35 VD5 XvVD[5] GPF1[1]/LCD_VD[5]
36 VD10 XvVD[10] GPF1[6]/LCD_VD[10]
37 VD14 XvVD[14] GPF2[2]/LCD_VD[14]
38 VD17 XvVD[17] GPF2[5]/LCD_VD[17]
39 VD9 XvVD[9] GPF1[5]/LCD_VD[9]
40 VD23 XvVD[23] GPF3[3]/LCD_VD[23]
41 VD1 XvVD[1] GPF0[5]/LCD_VD[1]
42 VD4 XvVD[4] GPF1[0]/LCD_VD[4]
43 VD22 XvVD[22] GPF3[2]/LCD_VD[22]
44 VD13 XvVD[13] GPF2[1]/LCD_VD[13]
45 VD16 XvVD[16] GPF2[4]/LCD_VD[16]
46 SYS DC Jack +5V
47 ADC.AIN2 XadcAIN[2] XadcAIN[2]
48 VDD_IO LDO3 of MAX77686
49 ADC.AIN3 XadcAIN[3] XadcAIN[3]
50 GND Ground

ODROID-Q

PIN# Expansion net name f ODROID-Q Pin name of Exynos4412 Function Description
1 GND Ground
2 GND Ground
3 GND Ground
4 GPK3.2 Xmmc3CDn GPK3[2]/SD_3_CDn/GNSS_GPIO[11]
5 ADC.AIN2 XadcAIN[2] XadcAIN[2]
6 ADC.AIN3 XadcAIN[3] XadcAIN[3]
7 GND Ground
8 GND Ground
9 USBHOST_D_N USB port 1 data- of USB3503
10 USBHOST_D_P USB port 1 data+ of USB3503
11 GND Ground
12 XE.INT12 XEINT[12] GPX1[4]/WAKEUP_INT1[4]/KP _COL[4]/ALV_DBG[8]
13 GND Ground
14 GND Ground
15 GPF3.5 XvSYS_OE GPF3[5]/SYS_OE
16 GPF3.4 XvVSYNC_LDI GPF3[4]/VSYNC_LDI
17 SLIMBUS.DATA XsbusDATA ETC1[0]/SLIMbusData
18 SLIMBUS.CLK XsbusCLK ETC1[1]/SLIMbusClk
19 GND Ground
20 GND Ground
21 SDA Xi2c1SDA GPD1[2]/I2C_1_SDA
22 SCL IXi2c1SCL GPD1[3]/I2C_1_SCL
23 RXD XuRXD[3] GPA1[4]/UART_3_RXD/UART_AUDIO _RXD
24 TXD XuTXD[2] GPA1[1]/UART_2_TXD/UART_AUDIO _TXD
25 SYS system load out Pin 23,24 of MAX8903C
26 SYS system load out Pin 23,24 of MAX8903C
27 VDD_IO LDO3 of MAX77686
28 VDDQ_MMC2 LDO4 of MAX77686
29 GND Ground
30 GND Ground

You can select the booting device from the following list on ODROID-X,Q:

* eMMC

* SDHC card

On ODROID-X the boot type is determined by a jumper. The jumper socket is called “JP2” on the ODROID-X board. When it is inserted, it will boot from SD card. When it is removed, the device will boot from eMMC.

The boot type for ODROID-Q is determined by second DIP S/W of USB-to-Serial debug board. when it is on, the Micro SD will boot. when it is off that is default, the eMMC will boot.

The board takes fixed 5V input. Generally, power input range can be from 4.8V to 5.2V. The actual power required by the ODROID-X will vary depending on how busy it is and what peripherals are connected. Power rating of optional adapter is 2A at 5V

The following table lists how much power is drawn over the 5V power cable whilst performing various tasks.

Task Power use (mA) Min ~ Max Notes
Only DC jack connected without peripherals under 100uA
Video output on Ubuntu with USB keyboard and mouse 380mA
Booting 300 ~ 980mA Taken from power supply readings
Idling (HDMI on, network on) 380mA
WLAN enabled, LCD Display 430~600mA without B/L power
Micro USB

Switches

Power

Press and hold Power switch for 0.5~1 seconds on the ODROID-X board to power it up.

Reset

Reset time is programmable from 3~11s, with 1s increments by I2C of MAX77686. On ODROID-X, -X2 and -Q it is set to 3 sec. so the power switch should be pressed for 3 seconds to activate a hardware reset.

User (defined)

You can use the user mode switch on ODROID-X/X2 to enter fastboot mode. If you push this user switch button, and then power on the board enters fastboot mode.

Status LEDs

There are three LEDs around the DC jack on the ODROID-X/X2. The power is off when all the LED's on the board except the D4 LED are off. * the D4 LED turns on when DC jack is supplied by power. * the D5 LED blinks during the boot sequence when the bootloader is entered normally. It means the Exynos4412 has read and executes the code from eMMC or SD. * D6 LED turns during boot when ODROID enters the kernel.

HDMI connector

The picture below shows the HDMI connector, it has 23 pins, although you can only see the odd numbered pins there.

The other pins hide under the connector. On the left side of HDMI Connector there is pin number 1, next to it are 3, 5, and so on until 19 on the right.

It is connected to the Exynos4412 via Common Mode ESD filter L3 and L4.

Here is pin map for the HDMI connector of ODROID-X/X2 and ODROID-Q.

PIN#Pin name of HDMI CONPin name of Exynos4412 board
1 Hot Plug Detect XEINT_31
2 Utility -
3 TMDS Data2+ XHDMITX2P
4 TMDS Data2 Shield -
5 TMDS Data2- XHDMITX2N
6 TMDS Data1+ XHDMITX1P
7 TMDS Data1 Shield -
8 TMDS Data1- XHDMITX1N
9 TMDS Data0+ XHDMITX0P
10 TMDS Data0 Shield -
11 TMDS Data0- XHDMITX0N
12 TMDS Clock+ XHDMITXCP
13 TMDS Clock Shield -
14 TMDS Clock- XHDMITXCN
15 CEC AA1
16 DDC/CEC Ground -
17 SCL XURTSN_1
18 SDA XUCTSN_1
19 +5V Power -
20 GND -
21 GND -
22 GND -
23 GND -

Camera Connector

As you can see in the picture below there is a 5MP camera connector. Both ODROID-X/X2 and -Q use that camera via a MIPI interface.

The circle on the top right indicates pin 1 on the connector.

Following is a pin map for the camera connector of ODROID-X and -Q.

PIN#Pin for CameraPin on Exynos4412 boardCMT
1 GND Ground -
2 NC Not Connect -
3 GND Ground -
4 DVDD_1.2V BUCK9 PMIC
5 DVDD_1.2V BUCK9 PMIC
6 VDDIO_1.8V OUT17(VDDQ_CAM) PMIC
7 GND Ground -
8 AVDD_2.8V OUT23(TOUCH) PMIC
9 GND Ground -
10 GND Ground -
11 AF_2.8V OUT23(TOUCH) PMIC
12 GND Ground -
13 RESET XEINT_25 -
14 GND Ground -
15 GND Ground -
16 SCL XSPIMOSI_0 -
17 SDA XSPIMISO_0 -
18 GND Ground -
19 MCLK XISPMCLK -
20 GND Ground -
21 MIPI_CLK_N XMIPISDNCLK -
22 MIPI_CLK_P XMIPISDPCLK -
23 GND Ground -
24 MIPI_DATA_N XMIPISDN0 -
25 MIPI_DATA_P XMIPISDP0 -
26 GND Ground -
27 MIPI_DATA1_N XMIPISDN1 -
28 MIPI_DATA1_P XMIPISDP1 -

USB connector

ODROID-X/X2 has six USB2.0 host ports. Two ports use the USB3503 chip on the CPU board. The other four ports are provided by a LAN9514 chip on the base board.

ODROID-Q has only one USB2.0 external host port. You can use USB keyboards, mouses and other USB gadgets on this USB Port. By the way, the CPU board has three USB2.0 hosts. Two are internal. One is connected to the expansion port. The other is connected to the 3G module.

IO Performance

CPU

GPU

* ioquake3

USB bus

We tested an USB card reader with SAMSUNG Class 10 8GB SD-card. ODROID-X can achieve about 12.9 MB/s

#dd if=/dev/sda of=/dev/null bs=32M count=10 iflag=direct

SD card / eMMC module

I/O Benchmarks with iozone3

* IOZone Benchmarks contributed by the user spicypixel

cmdline: iozone -e -I -a -s 50M -r 4k -r 512k -r 16M -i 0 -i 1 -i 2
Sandisk Ultra 30MB/s SDHC
------randomrandom
KBreclenwriterewritereadrereadreadwrite
5120049311056449945023724601
51200512692659742176121755215521846
5120016384391366522230322304222956961
ODROID eMMC 64GB
------randomrandom
KBreclenwriterewritereadrereadreadwrite
512004536254281418414315125864752
51200512230162340028792289292875223647
5120016384262622711939017390663907826496

I/O Benckmarks with GNOME Disk Utility

Storage media Read / Write throughput

x Storage Capacity Read (MB/s) Min,Avg,Max Write (MB/s) Min,Avg,Max Distro Kernel Notes
1 eMMC Toshiba 16GB 19, 24.5, 28.4 19.2, 22.8, 24.7 linaro ubuntu 12.07 3.0.15
2 SDHC C10 Samsung plus 8GB 12.7, 14.8, 26.2 2.3, 3.8, 14.3 linaro ubuntu 12.07 3.0.15
3 SDHC C10 Transcend 8GB 12.7, 14.9,16.4 2.3, 3.6, 15.5 linaro ubuntu 12.073.0.15
4 Extreme SDXC SanDisk 16GB 13.1, 15.1, 16.5 3.1, 5.9, 16.0 linaro ubuntu 12.073.0.15
5 Extreme SDXC SanDisk 64GB 13.3, 15.3, 17 3.7, 6.2, 15.3 linaro ubuntu 12.07 3.0.15
6 USB 2.0 to SATA 2.5“ HDD 500GB 11.5, 14.6, 20.3 ? linaro ubuntu 12.07 3.0.15

* System→Admin→Disk Utility→Benchmark results.

eMMC Toshiba 16GB

SDHC Class 10 Samsung 8GB

SDHC Class 10 Transcend 8GB

Extreme SDXC SanDisk 16GB

Extreme SDXC SanDisk 64GB

USB 2.0 to SATA 2.5" HDD

You can use hdparm to get more accurate information.

NIC

Test setup on LAN test server:

iperf -s -u

On ODROID-X:

iperf -t 60 -u -c <SERVER_IP_ADDRESS> -d

Results

Bandwidth CPU usage (top) Distro kernel note
84Mbits/sec Linaro Ubuntu 12.04 3.0.15

Prerequisites

* ODROID-X/X2 or ODROID-Q * 2A@5V DC Adaptor * Bootable SD-card or eMMC * USB to UART board * Micro USB cable * Micro HDMI cable and monitor or LCD module kit * USB keyboard and mouse * Optional Ethernet LAN cable * PC

LCD Module Kit for ODROID-X/X2

This is a list of operating systems running, ported or in the process of being ported to ODROID-X,Q,U Full OS:

android

u-boot

[http://dev.odroid.com/projects/ics/#s-6.4]

Exynos-4412 boot loader information. [http://dev.odroid.com/projects/4412boot/]

Note: That u-boot can be used for Ubuntu.

Kernel

Android 4.x ICS, JB

Ubuntu and other Linux distributions

Installing Linaro ARM Cross Toolchain on host PC (Ubuntu)

You can easily install the Linaro ARM cross-compiler on Ubuntu 12.04 or 12.10 as follows: Add this PPA with the following commands:

sudo add-apt-repository ppa:linaro-maintainers/toolchain
sudo apt-get update
#for cross compiler
sudo apt-get install gcc-arm-linux-gnueabihf
#for native compiler
sudo apt-get install gcc

This will install the latest GCC 4.7 cross-toolchain to compile the latest kernel which works with ODROID-X.

You can also perform above steps in Ubuntu on ODROID-X, if you want to use a native GCC compiler.

Setting environment variables

If you build the kernel on board(native), skip this step.

Inject some variables into .bashrc to setup kernel compilation.

cat >> ~/.bashrc <<EOF
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
EOF

Download the kernel source and build

First, download the latest Linux kernel source code for ODROID-X from github,then build the new kernel and modules as shown below.

sudo apt-get install xz-utils
git clone https://github.com/hardkernel/linux.git
cd linux
# Optional. This line can skip if you want to use "odroid-3.0.y" branch, because it is the default branch.
git checkout odroid-3.8.y -b odroid-3.8.y
make odroidx_ubuntu_defconfig
make zImage -j4
make modules -j4
make modules_install INSTALL_MOD_PATH=/media/rootfs

* for ODROID-X2 * make odroidx2_ubuntu_defconfig

* for ODROID-U2 * make odroidu2_ubuntu_defconfig

If you want to build the kernel on your board, just remove “INSTALL_MOD_PATH=/media/rootfs” in the last line.

If you want to send an updated/compiled uImage to your SD-card, use the command below with a card reader on your host PC:

cp arch/arm/boot/zImage /media/boot/

'Changing boot.scr'

Change the boot script (boot.txt) then create a u-boot image with:

mkimage -A arm -T script -C none -n "Boot.scr for odroid-x" -d /media/boot/boot.txt /media/boot/boot.scr

'Updating Initramfs'

Copy over your kernel configuration file to the /boot directory into a file called config-<kernel-version> like below. (Perform this process on your ODROID-X not host PC)

cp .config /media/boot/config-`uname -r`

The Linaro boot script (boot.scr) passes an initramfs image to the kernel at boot up. This image includes kernel modules that may be used at start up. You may create this image on the target system after you first boot into it with:

# Generate a file named /boot/initrd.img-<kernel-version>
update-initramfs -c -k `uname -r`

# Generate uInitrd and copy it into your boot partition with:
mkimage -A arm -T ramdisk -C none -n "uInitrd" -d /boot/initrd.img-`uname -r` /media/boot/uInitrd

* Please note we are using the zImage instead of uImage from middle of Dec 2012.

Linaro Ubuntu 12.04

See [http://dev.odroid.com/projects/odroid-xq/wiki?ubuntu How to burn prebuilt image and Building a custom Image]

ODROID-X and -Q are projects driven by a community of passionate and intelligent volunteers. If you have the ability, please contribute to our cause. Odroid's ambitions far exceed the resources available.

If you want to get involved, leave a message on the board with the following information:

Title: Want to be a member.
ID: (Your login ID)
Project name: (U-boot, Kernel, Android system and so on)
Description: Brief introduction

After the registration process, you can commit source (git access) and modify Wiki pages.