- BeaconDB เป็นบริการระบุตำแหน่งออนไลน์ที่มุ่งมาแทนที่ Mozilla Location Services โดยค่อย ๆ สร้างความครอบคลุมจากข้อมูล Wi-Fi และเสาสัญญาณที่ผู้ใช้ส่งเข้ามาโดยตรง
- การเก็บข้อมูลใช้รูปแบบ opt-in และข้อมูลที่ส่งเข้ามาจะถูกรวบรวมก่อนนำไปให้ไคลเอนต์ของ beaconDB API ใช้งาน พร้อมมีแผนเผยแพร่ data dump ที่ทำให้อ่านย้อนกลับได้ยากในอนาคต
- เนื่องจากยังเป็น บริการเชิงทดลอง ความครอบคลุมของ Wi-Fi ในแต่ละพื้นที่อาจยังไม่เพียงพอ และเมื่อค้นหาไม่สำเร็จจะ fallback ไปใช้ตำแหน่งเสาสัญญาณจาก data dump สุดท้ายของ MLS หรือการประมาณจาก IP
- บน Android สามารถส่งข้อมูลได้ผ่าน NeoStumbler, Tower Collector และ Network Survey และตั้งค่าให้ใช้งานเป็นบริการระบุตำแหน่งผ่าน microG, geoclue และการตั้งค่า Firefox
- นักพัฒนาสามารถใช้ endpoint ที่เข้ากันได้กับ MLS/Ichnaea API คือ
https://api.beacondb.net/v1/geolocate และจำเป็นต้องตั้งค่า User-Agent สำหรับระบุไคลเอนต์
หลักการเก็บข้อมูลตำแหน่ง
- BeaconDB ดำเนินฐานข้อมูลตำแหน่งบนพื้นฐานการเก็บข้อมูลแบบ opt-in
- ข้อมูลที่เปิดเผยต่อสาธารณะจะถูก ทำให้อ่านย้อนกลับได้ยาก เพื่อปกป้องผู้ส่งสัญญาณและผู้มีส่วนร่วม
- การอัปเดตข้อมูลเดิมต้องใช้ข้อมูลที่รับได้เฉพาะเมื่ออยู่ในระยะทางกายภาพของบีคอนเท่านั้น จึงเป็นโครงสร้างที่ช่วยเพิ่มความทนทานต่อการนำไปใช้ในทางที่ผิด
- ข้อมูลที่ส่งเข้ามาจะถูกรวบรวมก่อน แล้วจึงเปิดให้ไคลเอนต์ beaconDB API ใช้งานได้
- ในอนาคตมีแผนเผยแพร่ data dump ที่ถูกทำให้อ่านย้อนกลับได้ยากภายใต้ สัญญาอนุญาตสาธารณสมบัติ
- รายละเอียดวิธีประมวลผลข้อมูลที่ส่งเข้ามาดูได้ใน privacy notice
แอปสำหรับช่วยเพิ่มความครอบคลุม
-
NeoStumbler
- NeoStumbler เป็นแอป Android สำหรับส่งข้อมูลความครอบคลุมใหม่ได้อย่างง่ายดาย
- ดาวน์โหลดได้จาก Accrescent, F-Droid, Google Play, GitHub
- ตั้งแต่ v1.5.1 เป็นต้นไป หากกด “yes” ในพรอมป์ต์ ระบบจะตั้ง endpoint เป็น beaconDB
- ในเวอร์ชันก่อนหน้า ให้ไปที่ Settings → Endpoint → Suggested services แล้วเลือก beaconDB เพื่อให้ใช้ค่าที่ถูกต้องโดยอัตโนมัติ
-
Tower Collector
-
Network Survey
- Network Survey เป็นเครื่องมือสำหรับการเก็บข้อมูลภายในเครื่องอย่างครอบคลุม
- ดาวน์โหลดได้จาก F-Droid หรือ Google Play
- เปิดการส่งข้อมูลไปยัง beaconDB ได้จาก Upload Settings ใต้หัวข้อ Upload to Database บนหน้าหลัก
ข้อจำกัดปัจจุบันและการทำงานแบบ fallback
- BeaconDB ยังอยู่ในสถานะ เชิงทดลอง จึงอาจระบุตำแหน่งได้ไม่แม่นยำหรือบริการยังไม่เสถียร
- ฐานข้อมูลนี้ถูกสร้างขึ้นใหม่ตั้งแต่ต้น จึงมีความเป็นไปได้สูงว่าพื้นที่ใช้งานของคุณจะยังไม่มีความครอบคลุมของ Wi-Fi
- หากไม่สามารถประมาณตำแหน่งจาก Wi-Fi ได้ จะ fallback ไปใช้ตำแหน่งเสาสัญญาณแบบคร่าว ๆ จาก data dump สุดท้ายของ MLS
- ทางเลือกสุดท้ายคือใช้การประมาณจาก IP
- ข้อมูลที่ส่งเข้ามาต้องใช้เวลาอย่างน้อย 5 นาทีจึงจะพร้อมใช้งานผ่าน beaconDB API
- ขณะนี้ยังไม่มีการให้บริการ data dump และกำลังดำเนินการทำข้อมูลให้อ่านย้อนกลับได้ยากเพื่อปกป้องความเป็นส่วนตัวของผู้มีส่วนร่วมและเจ้าของ AP
วิธีตั้งค่าไคลเอนต์
-
microG
- หาก Android ROM รองรับ microG ก็สามารถตั้งค่า beaconDB เป็นบริการระบุตำแหน่งออนไลน์ผ่านเอนจินระบุตำแหน่งตัวใหม่ของ microG ได้
- เอนจินระบุตำแหน่งนี้เป็นสถานะ stable ตั้งแต่ v0.3.6
- เลือก beaconDB ได้ที่ microG Settings → Location → More options → Select online location service
- ต้องเปิดใช้งาน ‘Request from online service’ ทั้งใน ‘Wi-Fi location’ และ ‘Mobile network location’
-
geoclue
[wifi]
enable=true
url=https://api.beacondb.net/v1/geolocate
submit-data=true
submission-url=https://api.beacondb.net/v2/geosubmit
submission-nick=geoclue
-
Firefox
- สามารถตั้งค่า Firefox ให้ร้องขอไปยัง beaconDB โดยตรง หรือให้ดึงตำแหน่งผ่าน geoclue บน Linux ก็ได้
- หากต้องการใช้งานโดยตรง ให้ตั้งค่า
geo.provider.network.url ใน about:config เป็น https://api.beacondb.net/v1/geolocate
- หากต้องการใช้ geoclue ให้เปิดใช้งาน
geo.provider.use_geoclue
API และทรัพยากรสำหรับนักพัฒนา
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
แม้จะบอกว่าเป็น ข้อมูลที่เก็บรวบรวมอย่างมีจริยธรรม ด้วยวิธี opt-in แต่ก็สงสัยว่าในทางปฏิบัติมันทำงานอย่างไร
ถ้าเพื่อนบ้านสแกนเครือข่าย WiFi ของฉันแล้วอัปโหลดไปยัง BeaconDB แบบนี้ก็ไม่น่าถือว่าฉันยินยอมแล้วหรือเปล่า ในนโยบายความเป็นส่วนตัวระบุว่าให้เติม
_optoutต่อท้ายชื่อ WiFi ได้ ดูแล้วจึงใกล้เคียงกับ opt-out มากกว่า opt-inเครือข่าย WiFi จะประกาศการมีอยู่ของตัวเองออกไปรอบทิศทาง 10 ครั้งต่อวินาที ใครก็ตามที่อยู่ใกล้ก็รับสัญญาณได้ จึงเป็นที่รู้กันดีว่าไม่ควรใส่ข้อมูลอ่อนไหวไว้ใน SSID ของเครือข่าย ดังนั้นกรณีนี้น่าจะใกล้เคียงกับการที่สามารถ opt-out ได้มากกว่า
dump ข้อมูลใด ๆ จะมีเฉพาะข้อมูลที่เป็นแฮชเชิงเข้ารหัสซึ่งย้อนกลับไม่ได้ หรือข้อมูลแบบรวมยอดเท่านั้น
ตอนที่เคยลองหาสิ่งคล้าย ๆ กันสำหรับ GrapheneOS พบว่าไม่สามารถให้บริการ บริการระบุตำแหน่งแบบกำหนดเอง ได้
ถ้าใช้สิ่งนี้บน GrapheneOS ได้ก็คงดีมาก ถ้ามีใครรู้วิธีทำโดยไม่ใช้ microG ก็น่ายินดี ตอนนี้ฉันใช้ GMS แบบ sandboxed อยู่
ดูเหมือนผู้เขียนยังไม่มี แอปมือถือโอเพนซอร์ส ที่ให้เก็บข้อมูลโดยตรงจากอุปกรณ์ได้ โดยเฉพาะถ้าเป็น opt-in ตามฝั่งอุปกรณ์ที่เก็บข้อมูล ก็สงสัยว่าข้อมูลถูกรวบรวมมาจากที่ไหน
ปัญหาหลักของ MLS ไม่ใช่การถูก Skyhook คุกคาม/ฟ้องร้องเรื่องสิทธิบัตร หรอกหรือ อยากรู้ว่ามีสิทธิบัตรใดเกี่ยวข้อง และ beaconDB หลีกเลี่ยงปัญหานั้นอย่างไร
ถ้าอ่านประเด็นเรื่องการปิดตัวของ MLS[1] จะเห็นว่าองค์กรเดิมหลายแห่งอย่าง /e/ foundation และ Graphene ก็ดูสนใจให้บริการ ทางเลือกทดแทน อยู่เหมือนกัน สงสัยว่าตอนนี้มีผู้ให้บริการตำแหน่งแบบโอเพนซอร์สหลายรายแข่งขันกันอยู่ หรือโครงการนี้เป็นโครงการเดียวที่เข้าถึงได้แบบสาธารณะในตอนนี้
ตัวโครงการเองดูดี แต่บน GitHub[2] ดูเหมือนเป็นโปรเจกต์คนเดียวที่มีคนเข้าร่วมไม่มาก สงสัยว่ามีการพูดคุยเรื่องขยายโครงการและร่วมมือกับคนอื่นที่มีเป้าหมายคล้ายกันอยู่หรือไม่ ถ้าได้รับการสนับสนุนจากชุมชนนักพัฒนาเดิม น่าจะยกระดับขึ้นไปได้อีกขั้น
https://github.com/mozilla/ichnaea/issues/2065
https://github.com/beacondb/beacondb
แก้ไข: ดูเหมือนโครงการจริงจะอยู่ที่ Codeberg[3] และที่นั่นมีการมีส่วนร่วมจากคนอื่นนอกจากนักพัฒนาหลักมากกว่า GitHub เล็กน้อย
เดิมทีโครงการอยู่บน GitHub แต่ตอนนี้ย้ายไป Codeberg แล้ว
สงสัยว่ามีเหตุผลอะไรที่ API ไม่คืนตำแหน่งของ access point เพื่อให้ไคลเอนต์คำนวณตำแหน่งเอง
ยังไม่พบไคลเอนต์ที่ถูกพัฒนาให้ใช้ประโยชน์จากข้อมูลแบบนั้น ถ้าเจอหรือกำลังพัฒนาอยู่ก็อยากให้บอกกัน
หวังว่า GrapheneOS จะรองรับสิ่งนี้เร็ว ๆ นี้ ตอนนี้ ผู้ให้บริการ GPS ที่ไม่ใช่ Google แทบไม่มีหวังเลยถ้าไม่ใช่กลางแจ้ง
เป็นโครงการที่ยอดเยี่ยมจริง ๆ เห็นคนสายแก้ปัญหาเข้ามาเติมช่องว่างที่ MLS ทิ้งไว้ทีไรก็ดีใจเสมอ แยกต่างหากคือดีไซน์ก็ยอดเยี่ยมด้วย
สงสัยว่ายังดาวน์โหลด dump ข้อมูลชุดสุดท้ายของ MLS ได้จากที่ไหนบ้าง หาออนไลน์ไม่เจอ
กำลังทำโปรเจกต์ค้นหาเสาสัญญาณที่เชื่อมต่ออยู่โดยอิงจาก mcc, mnc, cid ฯลฯ ตอนนี้ดึงข้อมูลจาก opencellid และ combain เท่านั้น ถ้าได้ข้อมูลนี้เพิ่มคงดีมาก
ถ้าร่วมมือกับ geoclue2 ได้คงดี เมื่อ MLS ปิดตัว geoclue2 ก็ปิดใช้ การประมาณตำแหน่งจาก WiFi ไปแล้ว
https://gitlab.freedesktop.org/geoclue/geoclue