Android メインボード · タッチディスプレイ · ファームウェア — 2013年から

ボードを設計したチームによる Android ファームウェアのカスタマイズ。

当社は自社の Rockchip・Amlogic メインボード用ファームウェアを開発しています。そのため、デバイスの起動方法、ロックダウン、電源スケジュール、現場でのアップデート方法の変更は、第三者への依頼ではなく通常のエンジニアリング業務です。

変更できること

プロジェクトで本当に重要な Android の領域。

以下の各領域は、すでに当社ファームウェア上で 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 ファームウェア更新。

root 化ファームウェアが重要な理由

プラットフォーム署名不要。デバイスオーナーの回避策も不要。

標準の Android では、通常のアプリはシステムバーを非表示にしたり、電源をスケジュールしたり、固定 IP を設定したりできません。iTEMP ファームウェアなら呼び出し1回で済みます。チームは権限と格闘するのではなく、機能の開発に集中できます。

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 ボード — シリアルマップ、ピン表、書き込みガイドは Wiki で公開されています。
  • 変更点I/O 構成(RS232/RS485、GPIO、LAN、USB)、ディスプレイインターフェース(LVDS、eDP、MIPI、HDMI)、ボードサイズ、コネクタ配置。
  • ファームウェア同じチームが立ち上げと保守を担当 — ボードとその Android イメージはセットで出荷されます。
タッチスクリーン統合

オープンフレームから完成品ディスプレイまで。

ボードをパネル、タッチセンサー、カバーガラスと組み合わせ、オープンフレームモジュールまたは完成品の筐体を製作します。ストレッチ型、円形、その他の異形にも対応します。

  • パネルLCD または電子ペーパー。標準、ストレッチ型、異形。
  • タッチ・ガラスパネルと筐体に合わせたタッチセンサーとカバーガラス。
  • フォームファクターお客様の機器に合わせたブラケット付きオープンフレーム、または壁掛け・スタンド・テーブル型の完成品。
カスタムプロジェクトの進め方

最初のご相談から量産まで。

ODM プロセスを見る
  1. 相談

    要件の整理、SoC の選定、実現可能性の確認。

  2. サンプル

    ファームウェア変更を反映したエンジニアリングサンプル。

  3. 検証

    お客様側でのテストと試作ロット。

  4. 量産

    深圳の自社工場で製造・検査。

  5. 出荷後

    稼働中のデバイス群に向けたファームウェア更新とドキュメント。

FAQ

ファームウェアに関する質問

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.

すべての質問を見る