Peretasan Timex m851
(lock.cmpxchg8b.com)- Timex m851 terlihat seperti jam digital untuk pelari, tetapi sebenarnya merupakan platform berdaya sangat rendah yang menjalankan aplikasi pengguna hanya dengan CPU Seiko S1C88 8-bit dan RAM 2KB
- Pin di sisi perangkat adalah USB, sehingga data seperti jadwal dapat disinkronkan, dan dengan SDK Timex kita bisa membangun
cc helloworld.clalu mengunggahnya langsung ke jam - WatchApp memiliki struktur di mana kode diganti per state karena keterbatasan RAM, dan juga menggunakan API untuk kode bersama, variabel, serta data persisten
- Kernel menangani pekerjaan tingkat rendah seperti pengiriman event, timer, bunyi bip, scroll layar, akses basis data, serta kontrol crown dan lampu latar
- Karena perangkat ini sudah dihentikan, mendapatkannya tidak mudah, tetapi berkat simulator Virtual Datalink serta dokumentasi dan contoh kode yang dipublikasikan, pengembangan bisa dilakukan tanpa harus terus-menerus mereset jam fisik
Platform pengembangan di dalam jam kecil
- Timex m851 adalah jam digital dengan CPU Seiko S1C88 8-bit, ROM 48KB, RAM 2KB, dan layar utama dot-matrix 42x11
- CPU ini dirancang untuk operasi berdaya sangat rendah, sehingga dapat berjalan selama 3 tahun dengan satu baterai
- Pin di sisi perangkat adalah USB dan digunakan untuk menyinkronkan data seperti jadwal dengan jam
- Ada pustaka Linux, libdlusb
- Dengan SDK yang disediakan Timex, aplikasi dapat dibangun dengan
cc helloworld.clalu diunggah ke jam - Alat bawaannya berbentuk wizard era Windows XP, tetapi di dalamnya sebenarnya berjalan toolchain keluarga UNIX
Contoh WatchApp dan ekosistem yang sudah ada
- Contoh hello world dan
Makefiledapat dilihat di repositori taviso/timex - Berbagai WatchApp seperti game, utilitas, dan alat pernah dibuat untuk platform ini
Struktur WatchApp: state dan mode
- Aplikasi dibagi menjadi state, dan saat state berubah, kode aktif saat ini dibuang lalu kode baru dimuat
- Aplikasi dapat memakai hingga sekitar 30KB kode atau data, tetapi RAM hanya sekitar 2KB
- Karena tidak ada paging dan seluruh kode tidak bisa dimuat ke RAM, struktur state diperlukan
- Ada ruang kode bersama yang dipakai semua state, serta ruang variabel dan API basis data untuk data persisten
- Beberapa state di bagian depan dicadangkan untuk penanganan event umum, dan sisanya bisa dipakai aplikasi sesuai kebutuhan
- mode setara dengan aplikasi yang sedang tampil di depan
- Aplikasi biasanya menyediakan mode, tetapi juga bisa menambahkan tugas latar belakang atau tugas periodik
- Jika meminta perpindahan mode dengan
coreRequestModeChangeNext();, aplikasi berikutnya akan mendapatkan kendali
Penanganan event dan layanan kernel
- Setiap state memerlukan event handler
- Event mencakup masuk ke state, menarik atau memasukkan kembali crown, memutar crown, menekan tombol, dan input tombol mode
- Event yang tidak diperlukan bisa diabaikan
- Kernel menangani pemrosesan perangkat keras dan dispatch event, serta menyediakan berbagai layanan
- timer
- pembuatan nada dan bunyi bip
- scroll layar
- akses record basis data
- pengaturan crown
- kontrol lampu latar
- Kode contoh memakai layanan kernel seperti
lcdClearDisplay()danlcdDispBannerMsg()untuk menampilkan pesan banner"hello!"
Lingkungan debugging yang mengurangi reset
- Karena tidak ada proteksi memori, aplikasi bisa menimpa memori kernel
- Kernel harus memberi tahu watchdog setiap 2 detik bahwa sistem masih hidup; jika tidak ada notifikasi, watchdog akan mereset jam
- Saat melakukan komputasi berat, watchdog harus diperbarui dengan
hwResetWatchdog();
- Saat melakukan komputasi berat, watchdog harus diperbarui dengan
- Virtual Datalink adalah simulator pihak ketiga open source
- source
- Khusus Windows dan ditulis dengan Delphi
- Menyediakan conditional breakpoint, disassembler, save state, analisis resource, dan analisis daya
Mendapatkan perangkat yang sudah dihentikan dan dokumen referensi
- Timex m851 sudah lama dihentikan dan semakin sulit ditemukan
- Di eBay, perangkat yang hanya perlu ganti baterai agar bisa dipakai seperti baru masih bisa ditemukan
- Jika tidak punya kabel, kita bisa memanfaatkan penggunaan pinout USB Type-A standar dan konektor yang tidak biasa dengan kabel USB lama serta penjepit buaya
- Timex T5G751 juga menggunakan konektor yang sama dan relatif lebih mudah ditemukan, sehingga bisa dimanfaatkan untuk mendapatkan kabel
- Varian m851 bernama “dress edition” memiliki spesifikasi yang sama dengan bodi berbeda, dan kadang terdaftar dengan nomor model lain
- Dokumen referensi
- Design Guide: dokumen paling penting dan ditulis dengan baik
- CPU manual: manual CPU
- manual toolchain
- API reference: berisi daftar layanan yang disediakan kernel
1 komentar
Pendapat di Hacker News
Salah satu bagian yang terasa seperti sihir adalah Epson SoC(PN S1C88349) ini luar biasa hemat daya: saat berjalan dalam mode daya rendah 32kHz, konsumsi arusnya hanya 9 mikroampere
Membuat kita berpikir seberapa banyak pekerjaan yang bisa dilakukan dengan anggaran 32.000 siklus per detik
Selain itu, di dalamnya ada 48K ROM, 2K RAM, 3 timer, UART, sampai konverter A/D
[1] https://global.epson.com/products_and_drivers/semicon/pdf/id...
Chip Seiko-Epson, bersama chip EM-Swatch dan OKI-Casio, dipakai di jam tangan, kalkulator, termometer, dan perangkat LCD segmen murah berdaya rendah, yang harus berjalan bertahun-tahun dengan satu baterai kancing
Kalkulator dan termometer digital yang berusia lebih dari 15 tahun pun memakai chip Seiko-Epson seperti ini, dan masih berjalan dengan baterai kancing 1,5V bawaan pertamanya. Mengingat self-discharge alami baterai litium seiring waktu, itu cukup mengejutkan
Ukuran biner banyak aplikasi mobile sekarang lebih besar daripada keseluruhan sistem operasi dan aplikasi masa lalu yang mengerjakan hal-hal yang sangat berguna
Menakutkan membayangkan arah tren ini, dan kecil kemungkinan ada seseorang atau sesuatu yang akan mengeremnya
Seingat saya, termasuk hal-hal seperti kebocoran sakelar daya, secara nominal di bawah 100nA, dan itu benar-benar luar biasa
Mikrokontroler 4-bit(!) 32KHz ini berisi ROM 12-bit(‼) sebanyak 6.144 word, RAM internal 4-bit sebanyak 640 word, dan frame buffer 4-bit 160 word untuk driver LCD terintegrasi. Bahkan bisa double buffering
Chip yang benar-benar indah. Sekitar setahun lalu saya membuat emulator TypeScript, tapi belum mengunggahnya ke GitHub. Kalau ada yang tertarik, saya bisa mengunggahnya, dan ia juga bisa menjalankan firmware Tamagotchi yang belum dimodifikasi
Sebenarnya itu EEPROM, dan tampaknya agak mirip dengan memori Flash
Kalau ingin sesuatu dengan fitur sedikit lebih banyak, Bangle.js juga layak dilihat
Kelebihannya ada Bluetooth, GPS, akselerometer, motor getar, dan layar berwarna. Kekurangannya, baterainya bertahan jauh lebih singkat daripada 3 tahun
[0] https://banglejs.com/
Mereka mempromosikan Bangle.js 2 sebagai alternatif yang lepas dari smartwatch mahal, dengan “layar always-on yang tetap terbaca di bawah sinar matahari, daya tahan baterai 4 minggu, fleksibilitas penuh, dan kontrol penuh atas data”
Sekitar 15 tahun lalu saya punya jam tangan ini, dan bisa mencatat berbagai hal
Saya memasukkan hal-hal seperti lokasi kelas berikutnya, jadwal bus untuk halte yang sering dipakai, dan fase bulan
Sebelum era smartphone, mengecek jadwal bus dari jam tangan membuat saya terlihat seperti James Bond :)
Andai jam seperti ini masih dibuat. Dengan konsumsi daya seperti ini, sepertinya secara praktis bisa terus diisi ulang dengan tenaga surya
Lebih dari 20 tahun lalu saya biasa menyimpan jadwal bus sebagai draf SMS di ponsel Siemens
Untuk pendekatan yang lebih modern terhadap jam tangan yang bisa di-hack, mungkin ada ini
https://github.com/sharandac/My-TTGO-Watch
Saya menemukannya saat meneliti untuk membuat DIY iPod Nano 7G dengan board pengembangan LILYGO T5 E-Paper
Produk: https://www.aliexpress.com/item/1005002474854718.html
Repositori kode: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
Kalau saya punya lebih banyak waktu dan kemampuan di sisi Arduino, ini rasanya bisa menjadi pengganti iPod Nano 7G yang hebat ;)
Kode bawaannya hampir tidak berjalan dengan benar, dan baterainya hanya bertahan sekitar 12 jam meski tidak melakukan apa-apa. Namun memang benar, untuk orang yang menikmati debugging kode orang lain, barang ini luar biasa untuk harganya
Saya mengisi sedikit bagian yang hilang dan menemukan pengaturan untuk mengurangi konsumsi daya, sehingga pada penggunaan “normal” bisa bertahan sekitar 6 jam
Kodenya sekarang mungkin jauh lebih baik, tetapi anggaran dayanya akan jauh lebih dekat ke smartwatch Apple atau Samsung daripada m851 berdaya ultra-rendah ala tahun 80-an
Kalau suka bereksperimen, ini proyek kecil yang menyenangkan dan sepadan dengan harganya. Kalau berharap sesuatu yang bersaing dengan iWatch, kemungkinan besar akan kecewa
Kalau “bertahan 3 tahun dengan satu baterai” adalah keunggulan besar, Casio jelas masih membuat yang seperti itu
Coba cari “Casio MIP display”
Informasi tambahan tentang seri Timex Datalink ada di sini
https://en.m.wikipedia.org/wiki/Timex_Datalink
Apakah bisa direproduksi dengan LCD IPS modern?
Semoga makin banyak jam tangan dan wearable dibuat dengan chip 8-bit berdaya rendah seperti ini, dan pin datanya terekspos sehingga bisa diretas
Kalau bicara jam tangan, daya tahan baterai 3 tahun itu kuncinya. Kalau saya harus memikirkan untuk mengisi daya jam tangan, bagi saya itu sudah gugur
Swatch yang saya pakai sekarang sudah sekitar 1 tahun tetap menunjukkan waktu dengan akurat memakai baterai yang sama. Masalah jam mekanis murah adalah, kalau tidak hati-hati, pegasnya bisa diputar terlalu kencang. Jadi setiap beberapa tahun saya merusak satu, tapi toh harganya murah
Hal keren dari kedua jam itu adalah tidak perlu diisi daya setiap hari. Tentu saja, jam berpegas tetap harus diputar pegasnya
Ini mengingatkan lagi bahwa kita sebenarnya bisa punya barang yang bagus. Asalkan ada pasar untuk barang seperti itu
Saya ingin ada jam tangan yang terintegrasi dengan baik: konsumsi baterainya rendah, beban untuk dipakai atau diganti juga kecil, dan secara desain bisa diterima
Sayang sekali yang terbaik yang bisa kita lakukan sekarang adalah Sensorwatch [1]
[1] https://www.sensorwatch.net
Edit: Sensorwatch memang hebat, tetapi belum menjadi ekosistem
Saya penasaran apa yang bisa membuat orang ingin melakukan sesuatu dengan board tersebut
Kelihatannya lebih sederhana daripada Ez430-chronos dari TI, dan tampak bagus
Namun 3 tahun dengan satu baterai tidak terlihat terlalu luar biasa. Tentu tergantung aplikasi apa yang dipakai dan diunggah, dan fakta bahwa ini bisa diprogram memang keren
[0] https://www.sparkfun.com/products/retired/10019
Pada 2018 saya kehilangan satu Casio F91, lalu menemukannya minggu lalu saat berkemas untuk perjalanan kano. Waktu dan tanggalnya hanya terpaut beberapa detik dari Casio F91 yang saya pakai di pergelangan
Dulu saya pernah membeli satu, tapi hilang saat pindahan. Saya ingin mengutak-atiknya lagi
Edit: Ah, ternyata tautan yang kamu masukkan mencantumkan “RETIRED” di daftar produknya. Kalau produk TI, justru aneh kalau TI tidak menghentikannya saat respons pasar mulai muncul