Sudah 5 tahun sejak NYCTrainSign tutup
- Papan LED pribadi berbasis Raspberry Pi yang menampilkan waktu kedatangan kereta bawah tanah New York City
- Menyelidiki alasan kegagalan perusahaan dan menulis exploit untuk mengambil alih fleet mereka
- Saat itu sangat populer di Instagram/Facebook, tetapi banyak orang juga tidak pernah menerima barangnya
- Saya mendapatkannya lewat penjual barang bekas dan membongkarnya langsung; bagian dalamnya jauh di bawah standar, dan bisnisnya memang tidak berkelanjutan
- BOM (Bill of Materials) terlalu tinggi, artinya biaya manufakturnya sendiri sudah mahal
- Biasanya saya mengalikan biaya BOM sekitar 4x untuk memperkirakan harga ritel
Harga komponen
- Raspberry Pi 3 - $35
- Adafruit LED Matrix Hat - $25
- LED Matrix * 2 - $60
- 5V 2A Power Supply - $5
- 4GB MicroSD Card - $7
- Wood Case - $15
- Ditambah kabel, tombol, sekrup, packaging, dll. - $3
- Jadi bahkan dengan hitungan sesederhana ini saja sudah $150, artinya seharusnya dijual seharga $600
Mereka tidak tahu triknya
- Dari situs mereka di web archive, sepertinya mereka sempat mencoba menjualnya seharga $599
- Tetapi pada awalnya juga dijual seharga $299 atau bahkan $100 (versi beta)
- Sepertinya mereka juga sempat mencoba menyewakannya seharga $30 per bulan (cara ini pun kemungkinan sulit karena hardware butuh biaya awal)
Siapa yang menjual sekop
- Ada pepatah, "saat demam emas, jual sekop". Jadi siapa yang menghasilkan uang dengan menjual sekop di sini? Adafruit
- Dengan memakai "Adafruit LED Matrix HAT", harganya naik $25 (sekitar 20%)
- Ini bisa dihemat dengan sedikit usaha engineering, karena bukan komponen yang benar-benar wajib
- Bisa saja melakukan wiring langsung. Atau memakai HAT murah seharga $2
- Sebagian besar produk Adafruit biasanya hanya dipakai untuk prototyping awal, lalu diganti dengan yang lebih murah saat produksi massal
- Raspberry Pi juga bisa dianggap sebagai penjual sekop, tetapi memakai Arduino atau ESP32 sejak awal terasa agak berlebihan
- Menurut saya, memulai dengan Pi 3 lalu menggantinya ke Pi Zero W akan lebih tepat
Membaca kodenya
- Saya memeriksa kode Python & NodeJS yang ada di MicroSD
- Ada 2 komponen utama: server Python (server LED) dan server NodeJS (server Config)
LED Server
- Menangani penggambaran ke LED Matrix dan mengambil informasi kereta dari API perusahaan
- Berkomunikasi dengan server Config untuk mengambil pengaturan pengguna
- Mengambil data kereta, membuat gambar/teks, lalu merendernya ke LED Matrix
Config Server
- Menyimpan informasi pengguna dalam JSON dan memperbarui file itu saat menerima permintaan update
- Saat boot, Config Server mengambil informasi terbaru
- Terhubung ke AWS IoT Core dan menerima perubahan pengaturan real-time dari server MQTT
Code Quality
- Ada berbagai masalah pada kualitas kode
- Transit API tidak mempertimbangkan bahwa setiap stasiun bisa memiliki beberapa jalur kereta
- Tidak ada proses firmware update
- Banyak kode Python yang melakukan perubahan sistem hanya lewat system call
- Server LED Python berkomunikasi dengan server Config NodeJS untuk mengambil informasi; dugaan saya ini karena AWS IoT Core lebih mudah diakses dari NodeJS, sedangkan Python lebih mudah dipakai untuk mengelola display
- Tab dan spasi bercampur (mungkin konfigurasi code editor-nya bermasalah)
- Seluruh git history tersimpan di micro sd
- bash history juga tersimpan
- Hampir tidak ada code reuse
Menghidupkan Kembali Sign
Mendapatkan shell
- Seperti kebanyakan Raspberry Pi, karena MicroSD-nya tidak terenkripsi, sangat mudah mendapatkan root shell
- Cukup boot ke single-user mode lalu reset password pengguna
pi
- API perusahaan sudah tidak ada lagi, dan perangkat dirancang untuk memakai data lokal hardcoded saat tidak terhubung ke internet
Membuat ulang server
Mengambil alih kontrol Sign
- Seperti banyak perangkat IoT lain, Sign ini banyak memakai system call
- Salah satunya menggunakan Sign ID dengan langsung menempelkannya ke shell command
- Karena saya mengendalikan server API secara langsung, semua Sign bisa dikendalikan dari jarak jauh
- Setelah beberapa kali percobaan, saya menulis exploit-nya
- Saat perangkat Sign menyala, ia mengambil informasi konfigurasi dan melakukan request untuk logo gambar
- Pada saat itu Sign ID dikirimkan
- ID ini disimpan, lalu pada request logo gambar berikutnya exploit dikirim ke Sign
- Jika pengguna me-reboot Sign, exploit akan berjalan saat startup kembali
- exploit tersebut memperbarui kode yang diperlukan dan membuatnya melakukan pairing dengan server kami
- Sekarang perangkat-perangkat itu bisa bekerja dengan baik dengan server API yang baru
Apa yang sebenarnya terjadi?
- Masalah utamanya adalah terlalu banyak diskon
- Mustahil membuat barang seharga $150 lalu menjualnya seharga $117
- Bahkan $300 pun terlalu murah. Sejak awal seharusnya dijual seharga $600
- Untuk ukuran startup, mereka punya terlalu banyak staf pemasaran dan biaya iklan
- Mereka juga tidak mampu memproduksi cukup banyak produk dibanding permintaan (semuanya dirakit manual)
- Meski begitu, mereka terus menerima pesanan dan pada akhirnya seperti skema Ponzi: biaya dari pesanan baru dipakai untuk membuat barang yang sebelumnya dijual diskon
- Mereka juga gagal memindahkan produksi ke Tiongkok
- Dari LinkedIn, terlihat ada 4 pendiri, lalu kemudian bertambah menjadi 11 orang, dan pada titik tertentu sampai 15 orang
- Bahkan jika hanya menghitung $60k per founder, mereka harus menjual setidaknya 600 perangkat dengan laba $400 per unit
- Menurut screenshot yang dibagikan pendirinya, mereka sempat menghasilkan pendapatan $250k dalam 2 bulan
- Tetapi karena diskonnya terlalu besar, tidak jelas sebenarnya berapa laba yang mereka dapat
- Para pendiri tidak pernah menjelaskan dengan jelas apa yang terjadi, mengapa hanya sedikit produk yang dikirim, dan ke mana semua uang itu pergi
- Salah satu pendiri mengatakan bahwa secara pribadi ia sama sekali tidak menerima uang
- Saya percaya NYCTrainSign mungkin akan berhasil kalau setidaknya mereka sempat berbicara dengan seseorang yang paham elektronik
- Sebaliknya, advisor utama mereka adalah profesor ilmu komputer di universitas
- NYCTrainSign pada dasarnya adalah proyek yang dibuat CEO di waktu luang, lalu mencoba menjualnya seharga $300~$600 tanpa memikirkan apa yang akan terjadi setelahnya
- Kesimpulannya: "Good Idea, Good Timing, Bad Team, Bad Product"
What Happens Now
- Saat pertama mulai mengerjakan ini, saya sempat bermimpi menjual Sign versi saya sendiri
- Saya membuatnya dengan ESP32 dan masih memakainya sampai sekarang
- Tetapi semakin dipikirkan, saya rasa saya bukan orang yang cocok untuk membuat dan menjual produk ini
- Pasar LED Sign juga sudah sangat kompetitif: ada Tidbyt dan banyak perusahaan lain di Amazon
- Jadi saya memutuskan membiarkannya tetap sebagai proyek pembelajaran pribadi
- Hal-hal terkait NYCTrainSign telah saya rilis sebagai open source
- Termasuk server API beserta kode exploit
- Saya juga akan terus meng-host server NYCTrainSign yang baru (biaya hosting-nya sangat murah)
- Saya tidak berencana menambahkan fitur baru, tetapi ada beberapa ide untuk firmware yang lebih baik
- Jika Anda punya Sign, saya sudah membuat situs untuk mengelolanya dari jarak jauh, jadi silakan dicoba
- "Kalau Anda tidak punya Sign, jangan beli yang baru"
2 komentar
Menarik juga wkwk
Tapi kalau ini dianggap punya profitabilitas lalu dijadikan bisnis, kira-kira tidak akan jadi masalah hukum ya?
Rasanya seperti menonton game tycoon
Code Quality > Sepertinya ada salah ketik yang menuliskan berbagai masalah kualitas kode sebagai "tidak ada"