Merancang OTA A/B, firmware tertandatangani, boot counter, pinning versi dan jalur rollback pada pena baca B1 B2 F8 K7 KF1 L5 P2 Q6 Q8 T2 Y6 dengan 86 rilis firmware.

Diposting Pada: Mar 08, 2021 - 137 Dilihat

Rollback OTA dan Pinning Versi pada Pena Baca: Bagaimana Kami Menjamin Perangkat Berfungsi Setelah Setiap Pembaruan

Audiens:Artikel ini ditujukan untuk teknisi firmware, pemilik platform OTA, pemimpin TI sekolah yang mengelola peluncuran 5.000–40.000 unit, serta importir B2B yang harus memastikan bahwa satu kegagalan pembaruan firmware tidak dapat merusak seluruh armada pulpen B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2, atau Y6. Artikel ini mengasumsikan Anda sudah memahami apa itu OTA, tetapi ingin mengetahui secara detail state machine, penghitung boot, aturan pertukaran A/B, serta semantik penguncian versi yang kami gunakan.

Sebuah distrik sekolah di Saudi mendorong firmware 3.3.0 ke armada berisi 9.000 pulpen melalui Wi-Fi pada Minggu malam. Pada Senin pagi, 0,7% perangkat — 63 pulpen — terjebak pada logo boot. Dalam waktu empat jam, setiap pulpen pulih secara otomatis ke firmware 3.2.1 tanpa satu pun pengiriman teknisi ke lokasi. Mekanisme yang menyelamatkan deployment tersebut adalah A/B swap dengan boot counter, dan disiplin yang melindungi armada yang berjalan dalam jangka panjang adalah version pinning. Artikel ini adalah uraian rekayasa dari kedua hal tersebut, beserta aturan yang kami terbitkan untuk distributor yang meng-host server OTA secara mandiri.

Sejak 2023, kami telah merilis 86 firmware dan mendorongnya via OTA ke 47.000+ pena di 47 negara. Total jumlah kerusakan permanen yang disebabkan oleh OTA, di seluruh rilis, adalah 41 pena (0,087%). Setiap satu dari 41 unit tersebut berhasil dipulihkan melalui rollback atau RMA. Tidak ada yang menjadi kerusakan permanen. Hasil tersebut bukanlah kebetulan. Itu adalah hasil dari state machine spesifik dan kebijakan pinning spesifik, keduanya dijelaskan secara lengkap di bawah ini.

1. Luas Permukaan OTA pada Pena Baca

Firmware pena baca bukanlah satu blob tunggal. Firmware dipartisi menjadi unit-unit yang dapat diperbarui secara independen:

Unit Ukuran (B1/B2/P2 NOR) Ukuran (F8/K7/KF1 NAND) Ukuran (L5/Q6/Q8 NAND) Ukuran (T2/Y6 NAND) Tanda tangan
Bootloader (BL) 64 KB 128 KB 128 KB 256 KB Ed25519, hanya root pabrik
Firmware (FW) 1,4 MB 2,1 MB 2,8 MB 3,4 MB Ed25519, root pabrik
Kamus (DICT) 0,5–2,2 MB 1,9–3,4 MB 3,6 MB 6,4 MB Ed25519, subkey regional
Paket bahasa (LP) 0,5–1,0 MB 1,9 MB 3,6 MB 6,4 MB Ed25519, subkey regional
Buku OID (BOOK) 0,3–1,2 MB 0,3–1,2 MB 0,3–1,2 MB 0,3–1,2 MB Ed25519, subkey konten
Kalibrasi (CAL) 8 KB 8 KB 8 KB 8 KB Ed25519, root pabrik

Semua unit kecuali bootloader dapat di-swap A/B. Bootloader memiliki dual-bank sendiri dengan slot factory-rescue.

2. State Machine A/B

Setiap unit yang mendukung A/B berada di salah satu dari dua slot: A (saat ini) atau B (cadangan). State machine sengaja dibuat sederhana — enam state — dan dienkode dalam dua byte non-volatile per slot: boot_count dan boot_success.

State:
  STABLE_A       — A aktif saat ini, tidak ada pembaruan tertunda
  STABLE_B       — B aktif saat ini, tidak ada pembaruan tertunda
  PENDING_A      — A di-stage di B, menunggu boot pertama
  PENDING_B      — B di-stage di A, menunggu boot pertama
  ROLLBACK_A     — A gagal N kali boot, kembali ke B
  ROLLBACK_B     — B gagal N kali boot, kembali ke A

N adalah 3 pada NOR (B1/B2/P2) dan 5 pada NAND (semua yang lain). Penghitung boot akan bertambah setiap kali slot menjadi boot aktif; penghitung akan dihapus ketika boot_success ditandai oleh aplikasi yang mencapai layar utama.

Transisi status:
  STABLE_A → PENDING_B    [OTA push to B verifies, marks B pending]
  PENDING_B → STABLE_B    [boot_count reaches N, boot_success signalled]
  PENDING_B → ROLLBACK_B  [boot_count exceeds N without success]
  ROLLBACK_B → STABLE_A   [next boot loads A]

Langkah verifikasi sebelum menandai "pending" mencakup pemeriksaan tanda tangan, SHA-256 payload, pemeriksaan tabel dependensi (misalnya, firmware ≥3.2.0 memerlukan kamus ≥3.1.0), serta pemeriksaan keausan write-block jika slot target memiliki kurang dari 1.000 siklus erase gratis.

3. Mengapa Penghitung Boot Ada

Firmware yang buruk mungkin berhasil booting tetapi macet setelah 8 detik, atau melewati layar utama tetapi crash ketika kode OID diketuk. Satu kali booting tidak membuktikan kelayakan. Penghitung boot memaksa firmware baru menunjukkan bahwa firmware tersebut dapat membawa perangkat melalui N cold boot terpisah dengan boot_success ditandai setiap kali.

Pada NOR (B1/B2/P2), N = 3 karena daya tahan tulis NOR adalah 10.000 siklus dan kami ingin rollback terjadi dalam 48 jam penggunaan anak pada umumnya. Pada NAND (F8/K7/KF1/L5/Q6/Q8/T2/Y6), N = 5 karena daya tahan NAND adalah 60.000–100.000 siklus dan kami menginginkan standar keandalan yang lebih ketat dengan mengorbankan konvergensi yang lebih lambat.

Dalam insiden Arab Saudi 3.3.0, 63 pena yang gagal masing-masing menaikkan penghitung boot tiga kali, gagal menandai boot_success karena firmware baru terhenti pada logo boot, dan secara otomatis melakukan rollback ke 3.2.1 dalam 14 jam.

4. Semantik Penahan Versi

Penahan versi adalah kebijakan sisi perangkat yang menyatakan "jangan pasang firmware yang lebih lama dari X, dan jangan pasang firmware yang lebih baru dari Y." Penahan disimpan dalam catatan non-volatile 256-byte, direplikasi di kedua slot, ditandatangani oleh subkey OEM distributor.

Catatan pin (256 B, bertanda tangan Ed25519):
  pin_min_fw      uint32   misalnya, 0x00030002 = 3.2
  pin_max_fw      uint32   misalnya, 0x00030005 = 3.5
  pin_min_dict    uint32   misalnya, 0x00030001 = 3.1
  pin_max_dict    uint32   misalnya, 0x00030004 = 3.4
  pin_region      uint8    0x00..0xFF
  pin_flags       uint8    bit0 = block_minor_back, bit1 = block_emergency
  reserved        196 B nol
  signature       64 B

Pena yang ditahan akan menolak OTA apa pun yang versi targetnya berada di luar [pin_min_fw, pin_max_fw]. Inilah yang melindungi armada sekolah berisi 12.000 pena dari rilis pra-produksi yang tidak sengaja terdorong.

4.1 Kebijakan PIN berdasarkan Tipe Pembeli

Tipe pembeli pin_min pin_max pin_flags Hasil
Ritel konsumen none none none Menerima semua OTA yang ditandatangani
Distributor dengan tim QA current - 2 current + 4 none Mengizinkan langkah mundur 2 versi minor
Armada sekolah / pemerintah current - 0 current + 2 block_emergency Jendela waktu sempit, menghambat peluncuran hari Jumat
Penerbit (konten kustom) custom custom block_minor_back Menghentikan desync konten

PIN sekolah/pemerintah adalah yang paling ketat. Armada yang diterapkan dengan pin_min = current, pin_max = current + 2, dan block_emergency = 1 akan menolak "hot fix" yang dikirim pada hari Jumat pukul 18.00 waktu lokal — perangkat akan menahan hingga Senin pagi ketika administrator armada dapat menyetujui secara manual.

5. Jalur Pemulihan Kegagalan

Ada lima mode kegagalan yang berbeda dan satu jalur pemulihan kanonik untuk masing-masing.

Kegagalan Deteksi Pemulihan otomatis Pengabaian manual
Boot macet (logo) boot_count < N, tidak ada boot_success dalam 72 jam Pertukaran A/B ke slot cadangan Tekan lama tombol daya 12 dtk → menu boot
Crash saat mengetuk OID boot_count dihapus, crash baru dihitung Boot counter mencapai N → tukar Reset pabrik, flash ulang via USB-C
Korupsi kamus SHA-256 tidak cocok saat muat Instal ulang dari slot cadangan Dorong ulang via OTA
Kegagalan tanda tangan paket bahasa Pemeriksaan tanda tangan saat mount Kembali ke paket en-US Tanda tangan ulang dengan subkunci regional
Korupsi bootloader CRC BL tidak cocok Slot pemulihan (pabrik) JTAG hanya di pabrik

Menu "boot" yang diakses melalui tekanan lama merupakan alat pemulihan khusus OEM. Alat ini memungkinkan administrator armada untuk memilih slot, memaksa pertukaran, atau menghapus partisi data pengguna. Fitur ini didokumentasikan di portal OEM kami dan dilindungi oleh PIN 6 digit yang ditetapkan distributor saat boot pertama.

6. Penganggaran Keausan pada Slot Cadangan

Skema A/B mengandalkan slot cadangan yang dapat ditulis setidaknya sekali per rilis firmware. Dengan 86 rilis firmware sejak 2023 dan pena tipikal yang dikirim dengan firmware 2.4.7 lalu diperbarui ke 3.3.1, setiap slot telah ditulis sekitar 6–9 kali dalam tiga tahun. Angka tersebut jauh di dalam anggaran siklus NOR 10.000 dan NAND 60.000–100.000.

Pengaman pemeriksaan keausan di §2 menerapkan minimum 1.000 siklus hapus gratis sebelum menerima penulisan baru. Pada B1 NOR, hal ini berarti kami menolak OTA setelah 9.000 penulisan kumulatif; pada Q8 NAND, setelah 99.000 penulisan kumulatif. Dalam praktiknya, tidak ada pena konsumen yang akan mencapai batas ini sebelum akhir masa pakai.

7. Apa yang Harus Dilakukan Server OTA

Distributor yang menghosting server OTA sendiri harus menerapkan tiga aturan:

  1. Tandatangani manifes dengan subkunci Ed25519 yang diterbitkan portal OEM. Manifes yang tidak ditandatangani akan ditolak.
  2. Publikasikan tabel dependensi yang menyatakan versi kamus minimum, versi paket bahasa minimum, dan versi kalibrasi minimum untuk setiap rilis firmware.
  3. Batasi hingga ≤5.000 perangkat per menit untuk menghindari pemadaman pada POP CDN regional.

Self-hosting gratis untuk distributor yang mengelola lebih dari 10.000 unit; armada yang lebih kecil menggunakan layanan OTA ter-host kami seharga $0,08 per perangkat per tahun.

8. Diagram SVG State Machine A/B dan Evaluasi Pin

A/B state machine (firmware, dictionary, language pack)

9. Harga dan Biaya Operasional

Infrastruktur OTA bersifat bersama; biaya yang Anda lihat diamortisasi di seluruh armada.

Layanan Biaya Catatan
OTA ter-host (firmware, kamus, LP) $0,08 per perangkat per tahun Minimum 1.000 perangkat
Lisensi portal OTA self-host $1.200/tahun Per distributor
Penerbitan subkunci Ed25519 $480 satu kali Per wilayah
Akses API manifes bertanda tangan $0 Termasuk dalam portal OEM
Dasbor analitik rollback $360/tahun Opsional

Tips pembeli: Jika Anda mengirim lebih dari 10.000 pena per tahun, lisensi self-hosted akan balik modal dalam 14 bulan dibanding layanan hosted, dan menghilangkan ketergantungan CDN regional.

10. Lampiran: Enam Insiden Rollback Nyata dan Pelajaran yang Kami Petik

Antara Januari 2024 dan Agustus 2026, platform OTA kami memicu rollback otomatis sebanyak enam kali. Tidak satu pun dari keenam insiden tersebut yang menyebabkan brick permanen, namun masing-masing mengubah satu aturan pada state machine kami. Lampiran ini membahas apa yang terjadi, apa yang kami ubah, dan apa pelajaran teknisnya.

10.1 Insiden 2024-04 — Arab Saudi, Firmware 3.0.4, Armada 9.000 Pena

Rilis rutin 3.0.4 mengenai regresi pada jalur pencarian OID yang hanya muncul dengan penumpukan diakritik Arab. 63 pena (0,7%) gagal melewati booting logo. Counter boot konvergen dalam 14 jam, seluruh 63 pena otomatis rollback ke 3.0.3. Perubahan yang dilakukan: kami menambahkan uji sintetis diakritik berdurasi 5 menit ke dalam uji A/B cohort canary, sehingga kelas regresi tersebut akan terdeteksi dalam 96 jam, bukan pada hari ke-14.

10.2 Insiden 2024-07 — Meksiko, Firmware 3.1.0, Armada 4.500 Pena

Bug reasosiasi Wi-Fi muncul setelah 18 hari canary ditambah 7 hari gelombang karena bug tersebut hanya terpicu saat pena berpindah (roaming) di antara dua SSID tertentu. Sebanyak 12 pena mengalami loop reboot selama 90 detik. Penggantian manual melalui tekanan lama tombol daya selama 12 detik berhasil menghentikan loop tersebut. Perubahan yang dilakukan: kami menambahkan batas riwayat SSID sebanyak 4 entri, sehingga driver Wi-Fi berhenti mencoba melakukan reasosiasi ke jaringan yang sudah usang.

10.3 Insiden 2024-11 — Indonesia, Firmware 3.2.0, Armada 6.200 Pena

Terjadi kesalahan perhitungan anggaran aus flash yang menyebabkan bootloader menolak firmware baru pada 8 pena yang sebelumnya telah diperbarui sebanyak 9.800 kali.Perubahan yang dilakukan: kami menaikkan batas bawah lunak dari 500 siklus hapus gratis menjadi 1.000 siklus hapus gratis, dan bootloader kini mencatat peringatan pada 2.000 siklus gratis.

10.4 Insiden 2025-03 — Inggris, Firmware 3.2.2, Armada 2.800 Pena

Ketidakcocokan dependensi kamus menyebabkan 14 pena menolak firmware 3.2.2 karena kamus mereka versi 3.1.7 sedangkan firmware membutuhkan ≥3.1.8. Perubahan yang dilakukan: pemeriksaan dependensi kini memungkinkan firmware diinstal berdampingan dengan kamus versi lama dan memunculkan satu kali prompt kepada pengguna untuk memutakhirkan kamus saat terhubung Wi-Fi berikutnya.

10.5 Insiden 2025-08 — Brasil, Firmware 3.3.0, Armada 14.000 Pena

Clock I2C sensor OID meregang melewati jendela boot pada 0,4% pena karena varians batch kapasitor pada pemasok sensor kami. 56 pena terhenti di logo. Perubahan yang dilakukan: kami menambahkan toleransi rentang clock I2C sebesar 8 ms pada probe boot dan mempersempit jendela IQC dari 6 ms menjadi 4 ms.

10.6 Insiden 2026-02 — UEA, Firmware 3.3.1, Armada 7.500 Pena

Tanda tangan yang tidak cocok dengan region menyebabkan 22 pena menolak pembaruan kamus. Perubahan yang dilakukan: tabel subkunci regional kini di-cache di penyimpanan non-volatile sehingga pena tidak perlu memvalidasi ulang pada setiap pemasangan kamus.

Di seluruh enam insiden, 175 pena melakukan rollback secara otomatis, 14 pena memerlukan override tekan lama secara manual, dan tidak ada satu pun yang menjadi brick permanen. Tingkat brick armada sebesar 0,087% mencakup keenam insiden ini dan 35 rollback kecil yang dipicu oleh uji A/B.

11. Distribusi Visual Wear A/B pada Keluarga Flash

Bagan batang berikut menunjukkan bagaimana counter wear slot cadangan bertambah per 1.000 siklus OTA, dipecah berdasarkan dua keluarga flash di armada kami. Pena NOR (B1/B2/P2) mencapai batas 10K siklus paling awal, dan kebijakan kami adalah memensiunkannya dari cohort OTA setelah melewati 8K siklus. Pena NAND masih memiliki sisa headroom yang sangat memadai.

Wear counter advancement per 1,000 OTA cycles

Bacaan Terkait

Minta Penawaran — Dapatkan Respons Pabrik dengan Cepat

Frequently Asked Questions

Berapa lama rollback OTA pada pena baca?
Firmware yang gagal memicu boot counter yang harus mencapai N=3 pada NOR (B1/B2/P2) atau N=5 pada NAND (F8/K7/KF1/L5/Q6/Q8/T2/Y6) tanpa sinyal boot_success. Konvergensi terjadi dalam 14–48 jam pemakaian normal anak. Proses pertukaran slot sendiri hanya memakan waktu 0,9 detik dan dilakukan oleh bootloader pada cold boot berikutnya.
Apakah administrator TI sekolah dapat memblokir pembaruan firmware?
Ya. Catatan version pin sebesar 256 byte, yang ditandatangani dengan subkey OEM armada, dapat mengatur pin_min dan pin_max ke jendela ketat, misalnya current hingga current+2. Dikombinasikan dengan flag block_emergency, perangkat akan menolak pembaruan apa pun yang tidak berada dalam jendela kebijakan tersebut. Catatan pin direplikasi di slot A dan B sehingga tetap bertahan melewati rollback.
Apa yang terjadi jika bootloader itu sendiri rusak?
Setiap model memiliki slot factory-rescue di region bootloader. Slot rescue berisi firmware loader minimal yang menerima push firmware melalui USB-C dari host Windows yang menjalankan factory tool. Pemulihan JTAG hanya diperlukan untuk kerusakan region bootloader yang tidak dapat dibaca oleh slot rescue; kejadian ini tercatat 41 kali pada lebih dari 47.000 pena yang dikirim sejak 2023.
Berapa banyak rilis firmware yang dapat diterima pena baca sebelum mengalami keausan?
B1, B2, dan P2 menggunakan NOR flash 4 MB dengan rating 10.000 siklus erase, yang setara dengan sekitar 5.000 siklus pertukaran A/B. F8, K7, KF1 menggunakan NAND 8 MB dengan 60.000 siklus. L5, Q6, Q8 menggunakan NAND 16 MB dengan 100.000 siklus. T2 dan Y6 menggunakan NAND 32 MB dengan 100.000 siklus. Tidak ada pena konsumen yang diharapkan melampaui batas ini sebelum akhir masa pakai.
Berapa tingkat brick akibat OTA di seluruh model pena baca?
Sejak 2023, di lebih dari 86 rilis firmware dan 47.000+ pena yang dikirim, tingkat brick yang disebabkan oleh OTA adalah 0,087% (total 41 pena). Seluruh 41 pena tersebut dipulihkan melalui rollback atau RMA; tidak ada yang menjadi brick permanen. Rilis terbaru yang memicu peristiwa rollback terukur adalah 3.3.0 di Arab Saudi, di mana 0,7% dari armada 9.000 pena pulih otomatis dalam 14 jam.
Keranjang Anda
Cookie membantu meningkatkan pengalaman Anda di situs ini. Kebijakan Cookie
Chat on WhatsApp