解決方案
Micah Scott 買了 LELO 的 Lyla,一款可充電、防水的遙控震動器,除此之外她相當喜歡。無線電範圍不理想,控制延遲且不順手,而以傾斜為基礎的加速度計輸入始終感覺不對。直截了當的選項是將就著用、另買一個玩具,或拆開震動器;她判定玩具本身很好,問題出在遙控器,因此只更換遙控器。
為了說玩具的無線電語言,她從 FCC ID 資料庫著手,內部照片顯示一顆 MSP430 微控制器與一顆 CC2500 2.4 GHz 無線電晶片,兩者皆有公開的資料表。她沒有讀取或重新編程原始韌體,而是打開一個犧牲用的遙控器,將測試線焊到兩顆晶片之間的 SPI 匯流排上,並用一塊執行嗅探器的小板子擷取初始化序列與封包格式。發現很簡單:沒有配對、頻道寫死,且每個封包都重複一個馬達強度位元組,由原廠遙控器以遲緩的 9 Hz 發送。
她的替代遙控器使用常見零件:一塊 Arduino、一塊 CC2500 擴充板與一個超音波距離感測器。距離對應到馬達功率,因此在感測器前方以手或身體在空中移動,就能驅動震動器,無需學習任何按鈕。它的發送頻率約為原廠遙控器的十倍,換來反應速度與抗雜訊能力,而且由於沒有定址,範圍內任何震動器都會回應。她沒有使用客製充電電子電路,而是拆了一個 22 美元、3,200 mAh 的手機行動電源,裡頭已包含電池、充電器與升壓轉換器。
她在 Blender 中建模一個 3D 列印外殼,並公開 Arduino 函式庫、韌體與外殼檔案,完成的裝置感覺不像家電,更像類比樂器:感測器上方的那柱空氣成為身體可以觸碰、按入或揮過的空間,閉合了她想要的回饋迴路。文章更新指出,LELO 寄給她一台 Lyla 2,它也能搭配這個遙控器使用,因為 Lyla、Lyla 2 與 Tiani 2 使用相同的無線電協定。這篇文章於 2012 年 11 月出現後,在 Hacker News 上獲得 952 分與 253 則留言。
達成了什麼
保留好的玩具,只更換遙控器:聲納感測器將其上方空間變成類比控制面
為何有效
FCC 申請照片先指明了晶片,因此逆向工程從公開資料表開始,而非黑箱猜測。
在微控制器處於重置狀態時嗅探 SPI 匯流排,揭露了無線電配置與封包,完全無須修改玩具的韌體。
沒有配對且頻道寫死,意味著任何 CC2500 發射器都能驅動震動器,且單一協定涵蓋 Lyla、Lyla 2 與 Tiani 2。
無活動零件的聲納感測器讓控制免持且類比:距離成為強度,因此身體自身的動作閉合了回饋迴路。
發送頻率約高出十倍,換來反應速度與抗雜訊能力,而一個 22 美元的手機行動電源提供了電池、充電器與升壓,無需客製電路板。
可應用之處
改造最弱的元件,而非整個產品:FCC 照片與匯流排嗅探器無須韌體工程即可打開專有無線電,而現成的手機行動電源可取代客製電源設計
後續
Micah Scott 將此專案完成為日常裝置,並發布 Arduino LeloRemote 函式庫、韌體、外殼檔案與原型影片。這篇文章於 2012 年 11 月在 Hacker News 上獲得 952 分與 253 則留言,LELO 後來寄給她一台更新的 Lyla 2,它可搭配同一個遙控器使用,因為 Lyla、Lyla 2 與 Tiani 2 共用一種無線電協定。她將成果定位為一個開端:支持身體回饋迴路而非阻礙它們的玩具,未來感測器或許能預測動作,而不只是對動作做出反應。
追溯依據
參考來源
- Hacking My Vagina — Making a Vibrator That Listens to Your Body Micah Elizabeth Scott (scanlime.org) · scanlime.org
- Hacking my Vagina — Hacker News discussion Hacker News · news.ycombinator.com ·