안드로이드 메인보드 · 터치 디스플레이 · 펌웨어 — 2013년부터

보드를 설계한 팀이 직접 하는 안드로이드 펌웨어 커스터마이징.

자체 Rockchip·Amlogic 메인보드의 펌웨어를 우리가 직접 씁니다. 그래서 기기의 부팅, 잠금, 전원 스케줄, 현장 업데이트 방식을 바꾸는 일이 제3자에게 요청할 일이 아니라 일상적인 엔지니어링 작업입니다.

바꿀 수 있는 것

프로젝트에 실제로 중요한 안드로이드 영역.

아래 영역은 이미 ItempApiPub 시스템 API로 펌웨어에 열려 있습니다. 맞춤 프로젝트는 여기서 확장합니다.

power

전원·스케줄

예약 전원 켜기·끄기·재부팅, 절전·깨우기 — 앱에서 설정.

display

디스플레이

밝기, 회전·방향, 백라이트, HDMI 출력 제어.

kiosk

키오스크·잠금

내비게이션·상태 바 숨기기, 앱 설치 제어, 부팅 시 앱 자동 실행.

network

네트워크

고정 IP 또는 DHCP, NTP 서버, Wi-Fi 핫스팟, Wake-on-LAN.

gpio

GPIO·I/O

센서, 릴레이, 주변기기를 위한 GPIO 접근(핀 세부는 GPIO 레퍼런스 참고).

debug · ota

디버그·업데이트

USB·네트워크 디버깅, 로그 수집, 설치된 기기를 위한 OTA 펌웨어 업데이트.

루팅 펌웨어가 중요한 이유

플랫폼 서명도, 디바이스 오너 우회도 필요 없습니다.

일반 안드로이드에서는 보통 앱이 시스템 바를 숨기거나 전원을 예약하거나 고정 IP를 설정할 수 없습니다. iTEMP 펌웨어에서는 호출 한 번이면 됩니다. 권한과 씨름하는 대신 기능 개발에 집중하세요.

DeviceSetup.javaItempApiPub
// Reboot every night at 04:00
ItempApiPub.setRebootTime(context, "4", "0", true);

// Lock the UI to your app
ItempApiPub.setNavigationBarHide(context);
ItempApiPub.setStatusBarHide(context);

// Fixed network settings for the site
ItempApiPub.setStaticIp(context, "192.168.1.50", "192.168.1.1",
        "255.255.255.0", "8.8.8.8", "8.8.4.4");
커스텀 보드 설계

7개 SoC의 메인보드 — 그리고 당신의 보드.

KTM 보드는 RK3588, RK3576, RK3568, RK3566, RK3399, RK3288, Amlogic T982를 지원합니다. 문서화된 보드에서 I/O, 크기, 커넥터를 바꾸거나 새로 설계할 수 있습니다.

  • 출발점문서화된 KTM 보드 — 시리얼 맵, 핀 테이블, 플래싱 가이드가 위키에 공개되어 있습니다.
  • 바뀌는 것I/O 구성(RS232/RS485, GPIO, LAN, USB), 디스플레이 인터페이스(LVDS, eDP, MIPI, HDMI), 보드 크기와 커넥터 위치.
  • 펌웨어같은 팀이 브링업과 유지보수를 맡습니다 — 보드와 안드로이드 이미지가 함께 출고됩니다.
터치스크린 통합

오픈프레임부터 완제품 디스플레이까지.

보드에 패널, 터치 센서, 커버 글라스를 결합해 오픈프레임 모듈이나 완제품 하우징을 만듭니다 — 스트레치, 원형 등 특수형 포함.

  • 패널LCD 또는 전자종이, 표준·스트레치·특수형.
  • 터치·글라스패널과 하우징에 맞춘 터치 센서와 커버 글라스.
  • 형태장비에 맞춘 브래킷형 오픈프레임, 또는 벽걸이·스탠드·테이블형 완제품.
맞춤 프로젝트 진행 방식

첫 상담부터 양산까지.

ODM 프로세스 보기
  1. 상담

    요구사항, SoC 선택, 타당성 검토.

  2. 샘플

    펌웨어 변경을 반영한 엔지니어링 샘플.

  3. 검증

    고객 측 테스트와 파일럿 생산.

  4. 양산

    선전 공장에서 생산·검사.

  5. 출시 이후

    운영 중인 기기를 위한 펌웨어 업데이트와 문서.

자주 묻는 질문

펌웨어 질문

How do I flash firmware onto an iTEMP Rockchip board?

Use RKDevTool on Windows (or rkdeveloptool on Linux/macOS) with the board connected through its USB OTG / download port, then flash the update.img made for your exact board.

  1. Install the USB driver: run DriverInstall.exe from Driver Assistant → Install Driver (uninstall an older driver first).
  2. Power the board, connect the OTG port with a data cable, press the recovery key or reset until the tool shows Found One LOADER Device.
  3. Upgrade Firmware → Firmware → choose update.img → Upgrade. Wait for Reset Device.

Only use an image built for your board — the same SoC is not enough. Step-by-step with screenshots: Flashing over USB.

What is the difference between Loader mode and MaskRom mode?

Loader mode is the normal way to flash: it needs a working bootloader. MaskRom is the recovery mode burned into the chip itself — it works even when the bootloader is damaged.

  • Use Loader mode for routine updates.
  • Use MaskRom when the board shows no display, no adb, never appears as a Loader device, or a previous flash was interrupted.

MaskRom does not bypass secure-boot signatures or encryption. Details: MaskRom recovery.

How do I put a board into MaskRom mode?

Hold the board’s MaskRom control while connecting USB, and release it once the tool detects the device.

  1. Power off and remove any bootable microSD card.
  2. Hold the MaskRom button, recovery button or short the two MaskRom test pads (depends on the board).
  3. Connect the OTG port (and power).
  4. Release when RKDevTool shows Found One MASKROM Device (or rkdeveloptool ld shows Mode=Maskrom).

Timing is the fiddly part — if it is not detected, power-cycle and try again. In MaskRom you must download the loader .bin that matches the board’s SoC and memory before writing the image.

Flowchart: read the serial log, try Loader mode, otherwise enter MaskRom, load the matching loader, flash, power-cycle
Recovering a board that will not boot
How do I connect to the serial debug console?

Use a 3.3 V USB-to-TTL adapter on the board’s debug UART: GND to GND, adapter TX to board RX, adapter RX to board TX — leave VCC unconnected.

Wiring: GND to GND, adapter TX to board RX, adapter RX to board TX; VCC not connected
Debug UART wiring

Rockchip boards use 1,500,000 baud, 8N1, no flow control by default — not 115200, which shows garbage. Some adapters (older PL2303) cannot reach that speed; CH340-based adapters with PuTTY or picocom work well. The debug header location is on your board page.

RKDevTool says “No Devices Found”. What should I check?

Nine times out of ten it is the cable or the port, not the tool.

  • Cable: a charge-only USB cable is the #1 cause — use a known data cable.
  • Port: connect the board’s OTG / download port, not a host-only USB-A port. Avoid hubs and front-panel PC ports.
  • Driver: uninstall, then reinstall with Driver Assistant.
  • Mode: the board must actually be in Loader or MaskRom mode.
  • Linux: run with sudo or add a udev rule for USB vendor ID 2207 (Rockchip).
  • Flash one board at a time — two boards in download mode confuse the tool.
Is a board that will not boot after a failed update “bricked” for good?

Almost never. A board that stopped mid-update can be recovered through MaskRom mode, because MaskRom lives in the chip and does not depend on anything that was written to storage.

Start with the serial console — the boot log usually says what failed — then follow MaskRom recovery with the loader and image for your exact board. If the board never appears in MaskRom either, contact us: that is when a hardware check makes sense.

What is the difference between update.img and the separate partition images?

update.img is a single packed firmware file — flash it from RKDevTool’s Upgrade Firmware tab. Partition images (boot.img, system.img, … plus a partition table) are flashed individually from the Download Image tab or written to their offsets.

The two are not interchangeable, and both require the loader that matches the SoC and memory configuration. For everyday updates, use the update.img we provide for your board.

Can I flash from Linux or macOS instead of Windows?

Yes — use Rockchip’s open-source rkdeveloptool.

rkdeveloptool ld                          # list devices
rkdeveloptool db rk35xx_loader_vX.XX.bin  # download the matching loader
rkdeveloptool wl 0 update.img             # write the image from sector 0
rkdeveloptool rd                          # reset the device

Run it with sudo, or add a udev rule for USB vendor ID 2207. Use the loader file that ships with your board’s firmware.

Flashing fails at “Download IDB” or “Download boot”. Why?

The loader does not match the board. The loader .bin must match both the SoC and the DDR/memory configuration; a loader from another product with the same chip is not automatically compatible.

SymptomLikely cause
Download IDB failedLoader does not match SoC/DDR
Download boot failed (MaskRom)Wrong loader
Disconnects while sending the loaderPower or DDR initialisation
Detected, then drops mid-flashWrong loader or unstable power
Flash completes, will not bootImage for a different board

Use the loader and image from your board’s firmware package, and a power supply that meets the board’s rating.

Can I update a board in the field with a microSD card?

Yes, if the board still boots from SD. You need an SD-boot image made for that board — not the USB update.img, unless the package says so.

  1. Write the image with balenaEtcher (or Raspberry Pi Imager / dd).
  2. Power off, insert the card, power on — the board writes its eMMC.
  3. Do not remove the card or cut power while it writes.
  4. Power off, remove the card, power on. Leaving it in can re-flash on every boot.

A board that no longer boots at all needs MaskRom instead. Guide: Flashing from SD.

질문 전체 보기

무엇을 만드는지 알려 주세요. 우리는 어떻게 만들지 알려 드립니다.