วิธีเข้าถึง root ของเตียง Sleep Number
(dillan.org)- หากใช้ คอนโซล UART และตัวแปรสภาพแวดล้อมของ U-Boot บน Sleep Number Hub เพื่อเข้าถึง root ได้ ก็สามารถสร้าง เส้นทางควบคุมแบบโลคัล ที่ไม่ต้องผ่านเซิร์ฟเวอร์ SleepIQ ได้
- ปลั๊กอิน Homebridge เดิมเรียก SleepIQ API ทุก 5 วินาที และเมื่อมีผู้ใช้ระดับหลายพันคนก็สร้างภาระให้เครือข่ายของ Sleep Number จนได้รับคำขอให้ปิดใช้งาน
- อุปกรณ์เป้าหมายคือ Sleep Number Hub 360SIQ01D โดยเงื่อนไขสำคัญคือขา UART J16, คอนโซล 115200 baud, ไดรฟ์ USB แบบ FAT32 หรือ Ext3 และการลงทะเบียน public key ของ SSH
- หลังเข้าถึง root แล้ว หากใช้ Python 2.7.18 ของ Hub และ
/bam/scriptsจะสามารถจัดการการตั้งค่าและสถานะของเตียงผ่านเซิร์ฟเวอร์ HTTP บนพอร์ต 8000 ภายในเครือข่ายโลคัลได้ - Hub สามารถเปิด SSH reverse tunnel ไปยังเซิร์ฟเวอร์ Sleep Number ได้ ดังนั้นเมื่อการควบคุมแบบโลคัลเพียงพอแล้ว การตัดการเชื่อมต่ออินเทอร์เน็ตภายนอกและใช้ Bluetooth หรือการควบคุมภายในจะปลอดภัยกว่า
เหตุผลที่เริ่มหาแนวทางเข้าถึงแบบโลคัล
- เป้าหมายคือการ ควบคุมเตียง Sleep Number จากเครือข่ายโลคัล โดยไม่ต้องผ่านเซิร์ฟเวอร์ SleepIQ
- ปลั๊กอิน homebridge ที่เคยสร้างไว้ ทำให้ควบคุมการตั้งค่าเตียงจาก HomeKit หรือระบบอัตโนมัติได้
- โดยเฉพาะค่า bed presence ที่บอกว่ามีคนอยู่บนเตียงหรือไม่ มีประโยชน์ต่อการทำงานอัตโนมัติ เช่น ปิดไฟหรือล็อกประตู
- ปลั๊กอินเรียก SleepIQ API ทุก 5 วินาที และเมื่อจำนวนผู้ใช้เพิ่มขึ้นเป็นหลายพันคน ก็สร้างภาระให้เครือข่ายของ Sleep Number
- Sleep Number ขอให้ปิดใช้งานปลั๊กอิน
- การทำแบรนด์ของ repository ก็มีปัญหาว่าอาจดูเหมือนเป็นเครื่องมือทางการของ Sleep Number
- หลังจากนั้น งานเดิมได้ต่อยอดเป็นปลั๊กอินใหม่ homebridge-bed-control
- ปลั๊กอินใหม่ปิดการติดตาม bed presence เป็นค่าเริ่มต้น และเพิ่มคำเตือนก่อนเปิดใช้งาน
เส้นทางเข้าถึงที่พบจากฮาร์ดแวร์ Hub
- ช่วงแรกตรวจดู J10 header ใกล้ CPU แต่ไม่ได้ข้อมูล UART
- ในการกำหนดค่า CPU ตัวนี้ สาย UART ไม่ได้ถูกนำออกมาใช้งาน
- เชื่อมต่อ logic analyzer เข้ากับขา header 10 ขาที่ J16 header ด้านล่างของบอร์ด เพื่อค้นหาสัญญาณ UART
- เมื่อเชื่อมต่ออุปกรณ์ UART-TTY ก็สามารถเข้าถึงคอนโซลของอุปกรณ์ได้
- ได้ dump แฟลชเพื่อตรวจดูระบบไฟล์และช่องโหว่ แต่ไม่พบ backdoor ที่ใครก็ล็อกอินได้โดยไม่ต้องใช้ UART
- แต่พบ backdoor สำหรับบำรุงรักษา ที่ทำให้ Sleep Number สามารถ SSH เข้าสู่ Hub ได้
- เนื่องจาก Hub เชื่อมต่อกับเครือข่ายบ้านภายใน เส้นทางเข้าถึงนี้อาจเชื่อมต่อไปยังเครือข่ายภายในได้
- จึงแนะนำให้ตัดการเชื่อมต่อ Wi-Fi และใช้การควบคุมผ่าน Bluetooth ให้มากที่สุดเท่าที่ทำได้
สิ่งที่ต้องเตรียมและอุปกรณ์เป้าหมาย
- ขั้นตอนนี้ดำเนินการบนรุ่น Sleep Number Hub 360SIQ01D
- อุปกรณ์ที่ต้องใช้คืออุปกรณ์ UART-TTY และเครื่องมือเชื่อมต่อกับบอร์ด
- USB-C to UART หรือ USB-A to UART
- สามารถติดตั้ง Raspberry Pi Pico W ไว้ภายในแบบถาวรเพื่อเข้าคอนโซลจากระยะไกลในกรณีที่ SSH ไม่ทำงาน
- pin header 2.54mm กับหัวแร้งบัดกรี หรือ PCB clip clamp
- ต้องใช้ serial console เพื่อสื่อสารกับบอร์ด
- บน Linux และ Mac ใช้
minicomได้ - บน Windows ใช้ PuTTY ได้
- บน Linux และ Mac ใช้
- แฟลชไดรฟ์ USB-A ต้องฟอร์แมตเป็น FAT32 หรือ Ext3
- หาก Hub ที่ใช้งานอยู่มีอุปกรณ์ USB เสียบอยู่แล้ว อาจเป็น Wi-Fi dongle และถ้าไม่มีอุปกรณ์นี้ อาจเกิด boot loop ได้
ลำดับหลักของขั้นตอนเข้าถึง root
- เชื่อมต่ออุปกรณ์ UART เข้ากับ J16 header บนบอร์ด
- pin 1: TX สัญญาณที่เข้าสู่ Hub
- pin 2: RX สัญญาณที่ออกจาก Hub
- pin 3: ground
- ตั้งค่า serial console เป็น 115200 baud
- หลังเปิดไฟ Hub ให้กดปุ่ม Space ภายใน 2 วินาทีเพื่อหยุดการ boot อัตโนมัติ
- ต้องสำรองตัวแปรสภาพแวดล้อมของ U-Boot ด้วย
printenv -aก่อน- ควรบันทึกว่าต่างจากสภาพแวดล้อมปัจจุบันหรือไม่ เพราะอาจต้องกู้คืนค่าเริ่มต้น
- แก้
bootcmdโดยลบส่วนrun set_bootargs;ออก เพื่อให้ตั้งค่า boot arguments ด้วยตนเอง - เนื่องจากสคริปต์
/initอยู่ใน bootrom ที่ถูก hash ไว้ จึงแก้ไขโดยตรงไม่ได้ ต้องใช้bootargsเพื่อเปลี่ยนเนื้อหา/initขณะ runtime- สคริปต์ค่าเริ่มต้นจะค้นหาไฟล์เข้ารหัสที่ถอดรหัสด้วยข้อความ
let_me_root - แทนที่บรรทัดถอดรหัสด้วยค่าที่ถอดรหัสแล้ว เพื่อข้ามเงื่อนไขที่ต้องมีไฟล์เข้ารหัส
- สคริปต์ค่าเริ่มต้นจะค้นหาไฟล์เข้ารหัสที่ถอดรหัสด้วยข้อความ
- การ boot ครั้งแรกต้องใช้ไดรฟ์ USB ที่มีไฟล์
let_me_root- หลัง boot แล้ว หากเห็นพรอมป์
root@bam-se:~#ในคอนโซล แปลว่าเข้าสู่ root shell แล้ว
- หลัง boot แล้ว หากเห็นพรอมป์
- จากนั้น remount พาร์ทิชัน root เป็นโหมดอ่าน/เขียน และสร้างไฟล์
/root/let_me_rootเพื่อให้คงการเข้าถึงไว้ได้โดยไม่ต้องใช้ USB
การตั้งค่าการเข้าถึงผ่าน SSH
- หลังได้พรอมป์ root แล้ว ให้เพิ่ม SSH public key ลงใน
/root/.ssh/authorized_keysเพื่อตั้งค่าการเข้าถึงผ่านเครือข่าย - ต้องสร้าง SSH key บนเครื่องโลคัลที่จะใช้เชื่อมต่อ
- ตัวอย่างคำสั่งคือ
ssh-keygen -t ed25519 - ในประโยคอธิบายแนะนำ key แบบ
ecdsaแต่ตัวอย่างจริงใช้ed25519
- ตัวอย่างคำสั่งคือ
- หลังเพิ่ม public key แล้ว ให้ทดสอบการเชื่อมต่อในรูปแบบ
ssh root@$hub_ip -i <path to id_ed25519> - หากเชื่อมต่อไม่ได้ ต้องตรวจสอบรูปแบบและเนื้อหาของ
authorized_keys- มีการระบุว่าไฟล์นี้ควรมี key สองรายการ
สร้างเซิร์ฟเวอร์ควบคุมในเครือข่ายโลคัล
- แค่เข้าถึง root ยังแทนที่ฟังก์ชันควบคุมของแอปเตียงได้ยาก จึงรัน เซิร์ฟเวอร์ HTTP แบบโลคัล ภายใน Hub
- Hub มี Python 2.7.18 รวมอยู่ด้วย
- ดูเหมือนว่า Hub อัปเดตครั้งล่าสุดในปี 2018
- Python 2.7.18 มีแพ็กเกจ
simpleHTTPServerที่ให้ฟังก์ชันที่จำเป็น
script_server.pyเปิดเซิร์ฟเวอร์ HTTP บนพอร์ต 8000 และรันสคริปต์ใน/bam/scripts- path ของ URL จะกลายเป็นชื่อสคริปต์
- สามารถส่ง query parameter
argหลายตัวเพื่อใช้เป็น argument ของสคริปต์ได้ - ผลลัพธ์การรันจะแสดงในเบราว์เซอร์
- คัดลอกสคริปต์ไปยัง Hub ด้วยรูปแบบ
scp -O script_server.py root@$hub_ip:~ - หากต้องการให้เริ่มอัตโนมัติหลัง reboot ต้องต่อเข้ากับ startup script หรือเพิ่มสคริปต์
rc.d
ตั้งค่าให้รันอัตโนมัติหลัง reboot
- อินสแตนซ์ OS ที่กำลังรันทำงานอยู่ภายใน chroot ที่สคริปต์
/initของ bootloader สร้างขึ้น - ไฟล์ระบบหลายไฟล์ถูกเก็บไว้ในพาร์ทิชัน
tmpfsดังนั้นแม้แก้ไขโดยตรงก็จะไม่คงอยู่หลัง reboot - หาก mount พาร์ทิชันดิสก์ที่มีไฟล์ต้นฉบับแยกต่างหาก จะสามารถแก้ไขไฟล์
/etcต้นฉบับที่จะถูกคัดลอกหลัง reboot ได้ - สร้าง init script ในรูปแบบ
script_server.shแล้วคัดลอกไปยัง Hub จากนั้นวางไว้ในtmp/etc/init.dของพาร์ทิชัน root ต้นฉบับ - เพิ่ม symbolic link ใน
rc0.d,rc3.d,rc4.d,rc5.d,rc6.dเพื่อให้รันตอนเริ่มและตอนปิดระบบ - หลัง reboot หากเข้า
http://$hub_ip:8000/bamstatจากเบราว์เซอร์แล้วเห็นข้อมูลสถานะของ Hub แสดงว่าเซิร์ฟเวอร์ทำงานปกติ
การควบคุมที่ทำได้ด้วยสคริปต์ /bio
/bioดูเหมือนเป็น สคริปต์ควบคุมหลัก ของเตียง- ส่งคำสั่งในรูปแบบ
/bio?arg=XXXX - สามารถดูและตั้งค่า Sleep Number ได้
PSNL,PSNR: ดูค่าที่ตั้งไว้ล่าสุดของฝั่งซ้ายและขวาของเตียงPSNl,PSNr: ดูค่าปัจจุบันของฝั่งซ้ายและขวาของเตียงPSNX: ดูค่าที่ตั้งไว้ล่าสุดและค่าปัจจุบันของทั้งสองฝั่งPSNS&arg=L100: ตั้งค่า Sleep Number ฝั่งซ้ายเป็น 100 โดยช่วงค่าคือ 5..100
- สามารถจัดการการตรวจจับการมีคนอยู่และการตั้งค่าความเป็นส่วนตัวได้ด้วย
SPAU: ดูการตั้งค่าความเป็นส่วนตัวSPAU&arg=on: เปิดการตั้งค่าความเป็นส่วนตัว, ใช้offเพื่อปิดLBPL,LBPR,LBPX: ดูค่าการมีอยู่ฝั่งซ้าย ฝั่งขวา และทั้งสองฝั่ง
- รวมถึงฟังก์ชัน Responsive Air, ตำแหน่งเตียง, ไฟส่องสว่าง และอุ่นเท้าด้วย
LRSG: ดูการตั้งค่า Responsive Air ทั้งสองฝั่งLRLE&arg=on,LRRE&arg=off: เปลี่ยนการตั้งค่า Responsive Air ฝั่งซ้ายและขวาMFST: ดูตำแหน่งหัวและเท้าMFUL,MFUR,MFFL,MFFR: ตั้งค่าตำแหน่งหัว·เท้าฝั่งซ้ายและขวาMFO3,MFSO: ตั้งค่าสถานะไฟใต้เตียงหรือปลั๊กไฟ รวมถึงความสว่าง·ตัวจับเวลาFWGL,FWGR,FWSL,FWSR: ดู·ตั้งค่าระดับและตัวจับเวลาของระบบอุ่นเท้าฝั่งซ้ายและขวาSBAS: ตั้งค่า baseline ของเตียง
/bio?arg=helpแสดงรายการคำสั่งที่รันได้- หากเพิ่มคำสั่งเป็น argument ตัวที่สองในการเรียก
helpจะแสดงข้อมูลโดยละเอียดของคำสั่งนั้น
- หากเพิ่มคำสั่งเป็น argument ตัวที่สองในการเรียก
- สคริปต์
bioยังมี foundation preset, การตั้งค่ากรน, การควบคุม DualTemp และข้อมูลสถานะด้วย- คำสั่งที่ทำลายข้อมูลได้ เช่น
factory resetหรือการควบคุม radio ต้องใช้ด้วยความระมัดระวัง - ในเวอร์ชัน
bioที่ผู้เขียนใช้ ลำดับรายการMFSOในLISTผิด จึงต้องย้ายขึ้นไปอีกสองสามบรรทัดจึงจะเรียกใช้ได้
- คำสั่งที่ทำลายข้อมูลได้ เช่น
พื้นที่ที่ตรวจดูได้หลังเข้าถึง และข้อกังวลด้านความปลอดภัย
- ฟังก์ชันควบคุมเตียงรวมอยู่ในไดเรกทอรี root
/bam- หากตรวจดูสคริปต์ต่าง ๆ ในนั้น จะเห็นว่า Hub ทำงานอย่างไร
- พยายามหา backdoor ที่เข้าถึงได้โดยไม่ต้องใช้ UART แต่ช่องทางเข้าถึงที่ชัดเจนถูกปิดไว้แล้ว
- เมื่อ Hub สื่อสารกับเซิร์ฟเวอร์ Sleep Number จะเปิด SSH tunnel และให้ reverse tunnel ที่นักพัฒนาใช้สำหรับบำรุงรักษาได้
- เนื่องจากมีความเป็นไปได้ที่ผู้ใช้ภายนอกจะเชื่อมต่อเข้ากับเครือข่ายบ้านภายในโดยตรง จึงพิจารณาวิธีตัดการเชื่อมต่ออินเทอร์เน็ตภายนอกของ Hub เมื่อมีสคริปต์ควบคุมเครือข่ายภายในเพียงพอแล้ว
- Progressive Web App แบบง่ายที่สามารถแทนที่แอป SleepIQ โดยตรงก็เป็นตัวเลือกขั้นถัดไป
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ค่อนข้างเหลือเชื่อเลย เมื่อก่อนเคยใช้เตียงแบบนี้ แต่เป็นช่วงก่อนที่ทุกอย่างจะกลายเป็น สมาร์ต มีคอนโทรลเลอร์แบบมีสายสองตัวต่อกับปั๊ม และบนคอนโทรลเลอร์มีหน้าจอตัวเลขกับปุ่มปรับขึ้น/ลง
ไม่ต้องใช้อินเทอร์เน็ต ไม่ต้องใช้ไมโครคอนโทรลเลอร์ที่ใช้ Linux ไม่มีทางที่เตียงจะถูกแฮ็ก และก็นอนสบายได้
เช่น ถ้ามีความบกพร่องด้านการเคลื่อนไหวแบบใดก็ตาม ตั้งแต่โรคพาร์กินสันไปจนถึงอัมพาตทั้งสี่แขนขา การเชื่อมต่อกับคอนโทรลเลอร์กลางที่สั่งงานด้วยเสียงหรือวิธีป้อนข้อมูลมาตรฐานได้ อาจเป็นประโยชน์อย่างมหาศาล เพราะไม่ต้องรับมือกับข้อจำกัดด้านการเข้าถึงของแต่ละผลิตภัณฑ์ที่ต่างกันไป
สำหรับคนที่ร่างกายไม่ได้พิการ อุปกรณ์สมาร์ตโฮมส่วนใหญ่แทบดูไร้ประโยชน์ แต่สำหรับคนอื่น มันอาจเป็นเส้นชีวิตได้
ผมสงสัยตรงที่ว่า “เมื่อฮับสื่อสารกับเซิร์ฟเวอร์ของ Sleep Number มันจะเปิด SSH tunnel และให้ reverse tunnel เพื่อให้นักพัฒนาเชื่อมต่อเข้ามายังฮับเพื่อบำรุงรักษาเมื่อจำเป็น”
อยากเห็นว่าใช้การยืนยันตัวตนด้วย public key หรือรหัสผ่าน แล้วเวลาทำ tunnel กลับเข้าบ้านใช้ IP หรือ DNS ถ้าเงื่อนไขลงตัวพอดี น่าจะสร้างรูปแบบ DNS hijacking ที่ตลกที่สุดในประวัติศาสตร์มนุษย์ได้เลย
ยืมคำพูดอมตะของ Homer Simpson มาใช้ก็คือ เตียงขึ้น เตียงลง
แบบใหม่: เตียง Sleep Number เชื่อมกับข้อมูลคำสั่งซื้ออยู่แล้ว ก็เจาะ Sleep Number เพื่อหาเป้าหมาย จากนั้น SSH เข้าเตียงของคนนั้น แล้ว pivot เข้าสู่เครือข่ายบ้านเพื่อขโมยกระเป๋าคริปโต
ยังไงเงินก็มักถูกซ่อนไว้ใต้ที่นอนอยู่แล้วนี่ ;)
ทำไมเตียงต้องรัน Linux? ทำไม?
รู้สึกเหมือนเราอยู่ในเส้นเวลาที่โง่ที่สุดจากทั้งหมดที่เป็นไปได้ เตียงธรรมดาที่ไม่มี RAM 1GB กับระบบปฏิบัติการเต็มรูปแบบมันมีปัญหาอะไร? ที่ไหน ๆ ก็เหมือนกันไปหมด แม้แต่การหาเครื่องซักผ้าที่ไม่ต่อ Wi‑Fi ก็ยังเป็นเรื่อง และพอคิดว่าอีก 10 ปีต้องทำแบบนั้นอีกก็น่ากลัว
ในฐานะคนที่เคยเจาะอุปกรณ์ “สมาร์ต” ระดับ O(1000) ชิ้น ไม่ว่าจะเพื่อความสนุกหรือเพื่อหาเงิน ผมไม่อยากเอาของแบบนี้เข้าบ้านเลย แต่ความบ้าอย่าง เตียงที่รัน Linux แบบนี้ทำให้หลีกเลี่ยงยากขึ้นเรื่อย ๆ ได้โปรดหยุดเถอะ
แต่ผมไม่คิดถึงการต้องถือแผ่นไวนิลเปล่าไปห้องสมุดสาธารณะเพื่อรับอัปเดตซอฟต์แวร์หรอกนะ ถ้าลืมทีไรก็มีตัวเรือดขึ้นทุกที
“ผลิตภัณฑ์เทคโนโลยีล่าสุดที่ผมมีคือพรินเตอร์รุ่นปี 2004 และผมเตรียมปืนที่บรรจุกระสุนไว้พร้อมยิงมันทันทีถ้ามันส่งเสียงที่คาดไม่ถึง”
เมื่อหนึ่งศตวรรษก่อน เราค้นพบยาปฏิชีวนะ ซึ่งเป็นความก้าวหน้าครั้งใหญ่ หลังจากนั้นเราพบโรคที่ชัดเจนและวิธีรักษาที่ชัดเจนมากมาย และตอนนี้เหลือแต่เรื่องซับซ้อนและละเอียดอ่อน เตียงนี้รัน Linux เพื่อบอกสภาพการนอนของคุณ
ถ้านอนหลับไม่ดี โดยทั่วไปจะเกิดผลเสียหลายอย่างแม้จะไม่รุนแรงนัก และถ้ารู้ก็แก้ได้ มันเหมือนทำการตรวจการนอนหลับความเข้มต่ำให้ทุกคืน จึงอาจเป็นข้อมูลที่มีค่า
เตียง Sleep Number ราคาเป็นพันดอลลาร์ ถ้าอยากหลีกเลี่ยงก็น่าจะหลีกเลี่ยงได้พอสมควร
ดีต่อกระเป๋าเงินมาก และยังพอใจที่ไม่ส่งของที่ยังใช้ได้ไปฝังกลบ คำว่า ลดการใช้ ใช้ซ้ำ และรีไซเคิล มีลำดับความสำคัญตามนั้นจริง ๆ
ตอนแรกผมนึกเต็ม ๆ ว่าบทความนี้เป็นเรื่องแฮ็กเตียง Eight Sleep โดยคนที่ไม่อยากเอ่ยชื่อบริษัทตรง ๆ ด้วยเหตุผลทางกฎหมาย
แต่พอเห็นรูป “Number Sleep Hub” ที่ดูเหมือนมีอยู่จริงก็หลุดโลกไปเลย มีบริษัททำเตียงระบายความร้อนด้วยน้ำตั้งสองเจ้า เจ้านึงคือ Eight Sleep อีกเจ้าคือ Sleep Number เส้นเวลานี้แปลกเกินไปแล้ว เหมือนตัวสร้างเลขสุ่มของอินสแตนซ์นี้ได้ seed แย่ ๆ มา
https://i.ytimg.com/vi/pMiTq6YkJ2c/maxresdefault.jpg
พูดตรง ๆ คือผู้คนจ่ายเงินหลายพันดอลลาร์ให้เตียงลมปรับระดับได้แบบหรูที่มีโฟมวางทับอยู่ด้านบน
เตียงแบบนี้ควรมี ปุ่มควบคุมแบบกายภาพ ที่คลำใช้ได้แม้ในที่มืด ถ้าต้องหยิบสมาร์ตโฟนขึ้นมาตรงหน้าเพื่อปรับตอนกำลังจะหลับ ผมก็สงสัยจริง ๆ ว่าผู้ผลิตเตียงและที่นอนรู้หรือเปล่าว่าอะไรดีหรือไม่ดีต่อคุณภาพการนอน
Eight Sleep Pod 3 ก็มีวิธีเข้าไปในลักษณะคล้ายกัน [0] บางรุ่นมีการ์ด MicroSD ที่แก้ไขได้อยู่ภายใน จึงต้องใช้อุปกรณ์เสริมน้อยลง
วิธีในบทความอาจเป็นวิธีที่ดีในการได้สิทธิ์ root บน Pod ที่ไม่มีการ์ด อย่างไรก็ตาม สิ่งที่เพิ่งรู้คือ Eight Sleep ลงลายเซ็นให้เฟิร์มแวร์อัปเดตจริง แต่ก็ส่ง private key ที่ใช้ลงลายเซ็นอัปเดตนั้นมาในแพ็กเกจเดียวกันด้วย
[0]: https://github.com/bobobo1618/ninesleep
แน่นอนว่า 2,000–4,000 ดอลลาร์นั้นแพง แต่ถ้าเป็นค่าใช้จ่ายครั้งเดียวที่ใช้ได้ราว 10 ปี ก็ถือว่าสมเหตุสมผล แต่ถ้าจ่าย 4,000 ดอลลาร์แล้วยังต้องจ่ายอีกเดือนละ 25 ดอลลาร์ แบบนั้นไร้สาระ
สงสัยว่ามีใครทำแบบเดียวกันกับ Eight Sleep แล้วหรือยัง การที่ปรับอุณหภูมิเตียงไม่ได้เพียงเพราะอินเทอร์เน็ตหลุดนี่น่าหงุดหงิดอย่างมากจริงๆ
จะไม่ซื้อ Sleep Number
เคยนอนบนที่นอนเป่าลมมาหลายปี หลังจากผู้ผลิตเริ่มจ้างผลิตในจีน ตะเข็บของผนังกั้นภายในก็แตกในที่นอนสองตัว
อยากให้เลิกแพร่เรื่องไร้สาระอย่าง “ถ้าทำตามคู่มือนี้ คุณต้องแก้ไขไฟล์ภายในของฮับ Sleep Number และจะทำให้การรับประกันเป็นโมฆะ” ได้แล้ว
เช่นเดียวกับสติกเกอร์ “แกะแล้วหมดประกัน” ที่บังคับใช้ทางกฎหมายไม่ได้ ไม่มีอะไรที่ทำให้การรับประกันสินค้า เป็นโมฆะโดยอัตโนมัติ นอกจากการใช้งานผิดวิธีหรือการบำรุงรักษาที่ไม่ดี
เมื่อเตียงสมาร์ทเสีย ผู้ผลิตไม่ได้หลุดพ้นจากภาระการรับประกันเพียงเพราะคุณเคยยุ่งกับคอนโทรลเลอร์ รวมถึงการรับประกันโดยนัยด้วย ภาระในการพิสูจน์ว่าผู้บริโภคทำสินค้าเสีย ใช้งานในแบบที่ “ไม่สมเหตุสมผล” หรือไม่ได้บำรุงรักษาอย่างเหมาะสม อยู่ที่ผู้ผลิต
ถ้าคุณต่อ JTAG แล้วพลาดไปบริดจ์ 5V เข้ากับวงจรลอจิก 3.3V จนสมองของเตียงไหม้ อันนั้นเป็นความรับผิดชอบของคุณเอง
แต่ถ้า power supply ระเบิดจนคอนโทรลเลอร์เสีย ข้อเท็จจริงที่ว่าคุณติดหัวต่อ JTAG แปะสติกเกอร์ลูกตา และทาสีชมพู ไม่เกี่ยวกัน ต้องซ่อมให้
แม้จะแก้ไขเฟิร์มแวร์ ผู้ผลิตก็ต้องพิสูจน์ว่าการแก้ไขนั้นเป็นสาเหตุของความเสียหาย
เราไม่ได้คาดหวังว่าการเล่นเกมบนแล็ปท็อปจนเครื่องร้อนจะทำให้ประกันเป็นโมฆะ การติดตั้ง Firefox หรือ Linux ก็เช่นกัน แล้วก็ไม่มีเหตุผลให้คิดว่ากฎจะเปลี่ยนไปเพียงเพราะอุปกรณ์นั้น “โง่” กว่านิดหน่อย
ต่อไปคงเป็น ransomware “ถ้าไม่จ่าย 1,000 ดอลลาร์ เดือนหน้าทั้งเดือนแกจะนอนบนเตียงของแกไม่ได้”
มาดูข้อเท็จจริงบางอย่างกัน
เตียง Sleep Number มีเซ็นเซอร์ตรวจจับอัตราการเต้นของหัวใจ โดยทำจากการตรวจจับความต่างของแรงดันภายในที่นอนลม ในทางปฏิบัติก็แทบไม่ต่างจาก ไมโครโฟน และค่อนข้างไวด้วย
ลองค้นดูแล้ว เหมือนว่าจะผสานการวิเคราะห์เชิงสถิติที่ค่อนข้างสมเหตุสมผล จนได้ข้อมูลที่แม่นพอ น่าสนใจดี