NiFTY MiniDrive

แอบไปถอย NiFTY MiniDrive มาเห็นว่าเคยระดมทุนใน KickStarter เมื่อปีที่แล้ว ตอนนี้ออกมาเป็นผลิตภัณฑ์จำหน่ายใน iStudio ในยุโรป แต่บังเอิญไปเจอที่ iStudio ที่ Park Venture ก็เลยถอยมาเลย เพราะของแบบนี้หายากมากในไทยครับ 🙂 หน้าตากล่องกับเวลาเสียบเข้าไปแล้วเป็นดังภาพ

ดูสวยงามเรียบเนียนมาก อ้อเวลาแกะออกมาต้องใช้ NiFTY Tool เข้ามาช่วยไม่งั้นแงะไม่ออกครับ ผมซื้อรุ่น 4GB มา รู้สึกว่าความจุมันน้อยไปหน่อยก็เลยเปลี่ยน MicroSD ใหม่เป็น 64GB เลย ตอนแรกเข้าใจว่า MicroSD 128GB มีขายแล้วในไทย ปรากฏว่ายังไม่มีใครนำเข้ามาขาย ก็เลยซื้อ MicroSD 64GB มาใช้ก่อน มีเจ้า MiniDrive ก็ดูเท่ห์ดี แต่กลับมีปัญหาเรื่องการ unmount drive เวลา sleep, hibernate และการ mount ขณะ wake ทำให้เกิด error ทุกครั้งเวลาเปิดเครื่องขึ้นมาใหม่ ซึ่งแน่นอนว่าไม่มีใคร Shutdown MacBook Air แน่นอน 🙂 ก็เลยเจอปัญหานี้ไปเต็มๆ วิธีการแก้ปัญหานี้ง่ายๆ คือ ถอด MiniDrive ออกและเสียบใหม่ แหมถ้ามันถอดง่ายขนาดนั้นคงดี แต่นี่มันถอดยากมากๆ ก็เลยพยายามหาวิธีแก้ไขเรื่อง sleep/awake เพื่อสั่ง unmount/mount อัตโนมัติ พยายามไปค้นหาข้อมูลเกี่ยวกับเรื่องนี้ก็พบว่าเจอปัญหานี้กันหลายคน แค่ก็มีวิธีแก้ปัญหาหลายแบบ เช่น ใช้โปรแกรม Jettison หรือ AutoEject ราคาก็ประมาณ 2-4 USD และก็มีวิธีอีกอย่างหนึ่ง โดยใช้วิธีการ monitor sleep mode ของ MacBook โดยใช้โปรแกรม SleepWatcher วิธีติดตั้งก็ง่ายมากดาวน์โหลดและแตกไฟล์ไว้ใน ~/Download จากนั้นใช้คำสั่งต่อไปนี้
sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
sudo cp ~/Downloads/sleepwatcher_2.2/sleepwatcher /usr/local/sbin
sudo cp ~/Downloads/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8
เพิ่มลงใน Launcher เพื่อให้เปิดทุกครั้งที่ boot เครื่อง
sudo mv ~/Downloads/sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
sudo chown root ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
sudo chmod 644 ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
sudo launchctl load ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
เท่านี้ก็ติดตั้งเสร็จแล้ว 🙂 จากนั้นมาดูว่า Disk อันไหนที่เราต้อง eject และ mount อีกรอบเมื่อเปิดเครื่องใช้ diskutil ดูครับ
/usr/sbin/diskutil list
ถ้าเป็น MBA จะมี SSD อยู่ก้อนเดียวคือ Disk0 ส่วน Disk1-X จะเป็น Thumbdrive หรือ Card Reader ซึ่งก็คือ MiniDrive ของเรานั่นเอง ดาวน์โหลด SleepWatcher Script แตกไฟล์ไปที่ Desktop แก้ไขทั้ง sleep.txt และ wakeup.txt ว่า disk ก้อนไหนที่เราต้องการ unmount/mount
ไฟล์ sleep.txt
#!/bin/sh
/usr/sbin/diskutil list | grep -e 'disk[1-9]s.*' | sed 's/.*\(disk[0-9].*\)/\1/' | xargs -I{} /usr/sbin/diskutil eject {}
ไฟล์ wakeup.txt ให้เพิ่ม sleep 5 ลงไปสักหน่อยเพื่อหน่วงเวลาในการ mount drive ขึ้นมาหลังจาก wakeup
#!/bin/sh
sleep 5
/usr/sbin/diskutil list | grep -e 'disk[1-9]s.*' | sed 's/.*\(disk[0-9].*\)/\1/' | xargs -I{} /usr/sbin/diskutil mount {}
sudo kextunload -b com.apple.driver.AppleUSBCardReader; sudo kextload -b com.apple.driver.AppleUSBCardReader
แก้ไข sudoer config ใช้คำสั่ง
sudo visudo
เพิ่ม permission ต่อท้ายดังนี้ ตรง [YOUR USERNAME] ใส่ username ของคุณลงไป
[YOUR USERNAME] ALL=(ALL) NOPASSWD: /sbin/kextunload, /sbin/kextload
จากนั้นสั่งย้าย script ดังนี้
mv ~/Desktop/sleep.txt ~/.sleep
chmod a+x ~/.sleep
mv ~/Desktop/wakeup.txt ~/.wakeup
chmod a+x ~/.wakeup
วิธีนี้ช่วยให้คุณใช้ Standby Mode ของ MacBook Air ได้ พร้อม Eject MiniDrive เมื่อพับหน้าจอเครื่องและ Mount MiniDrive อัตโนมัติเมื่อเปิดหน้าจอได้อีกด้วย 🙂