لا تتفاجأ إذا رأيت "الساعة الموجودة بجهازك" اليوم الأحد 24 أكتوبر سافرت عبر الزمن 19 عامًا إلى الوراء، لتصبح في عام 2002، مما قد يؤدي إلى إرباك مستخدمي الأجهزة في جميع أنحاء العالم، حيث قد يجد أولئك الذين يستخدمون التطبيقات التي تعتمد على نظام تحديد المواقع العالمي (GPSd) للتعامل مع بيانات الوقت أنهم يعيشون 1024 أسبوعًا - 19.6 عامًا - في الماضي، حيث تم اكتشاف خطأ في نظام تحديد المواقع العالمي (GPSd) والذي يعمل على إعادة الساعات إلى مارس 2002.
خطأ برمجي
وقد تم التعرف على خطأ البرمجة في 24 يوليو 2021، وتم إصلاح خطأ التعليمات البرمجية الخاطئة، المكتوبة قبل عامين، ومنذ ذلك الحين، الآن الأمر يتعلق فقط بالتأكد من أن كل تطبيق وجهاز يقوم بنشر نظام تحديد المواقع العالمي (GPSd) قد قام بتطبيق التصحيح.
ويوفر بروتوكول وقت الشبكة (NTP) طريقة للأجهزة والخدمات للحفاظ على دقة الوقت باستخدام مجموعة هرمية من الخوادم المصنفة من حيث الدقة، حيث تمثل "الطبقة 0" مصادر الوقت الأكثر دقة.
ما Gpsd؟
هي خدمة خدمية تقوم بترجمة البيانات من مصادر نقل نظام تحديد المواقع العالمي (GPS) ونظام الملاحة العالمي عبر الأقمار الصناعية (GNSS) ونظام التعرف التلقائي (AIS) إلى تنسيق موحد يمكن تفسيره بواسطة تطبيقات المستخدم النهائي، ويتم استخدامه لتوفير معلومات الساعة لـ ntpd، وهو برنامج NTP الخفي الذي تستخدمه أنظمة التشغيل، لمزامنة ساعة نظام الجهاز مع الوقت الذي يوفره مستقبل GPS / GNSS / AIS - تعتمد الأقمار الصناعية لنظام تحديد المواقع العالمي (GPS) على ساعات ذرية متعددة بحيث تكوّن بيانات وقتها دقيقة للغاية.
استخدامات Gpsd:
ويستخدم Gpsd على نطاق واسع، ويتم تنفيذه في تطبيقات مثل Kismet وGpsDrive وgpeGPS وroadmap وroadnav وnavit وviking وtangogps وfoxtrot وobdgpslogger وgeohist وLiveGPS وgeoclue وqlandkartegt وgpredict وOpenCPN وGPSd-navigator وGPSd-ais-viewer.
وهو متوفر في أنظمة التشغيل Android وLinux وmacOS وأنظمة تشغيل أخرى شبيهة بـ Unix، فيما يقول موقع GPSd على الإنترنت، إن البرنامج يظهر في أنظمة متنقلة مدمجة، مثل الطائرات بدون طيار والغواصات الآلية والسيارات بدون سائق وفي التطبيقات المستخدمة في الملاحة البحرية وأنظمة IFF العسكرية (Identification Friend or Foe)، وتتبع الأقمار الصناعية لنظام تحديد المواقع العالمي (GPS).
سبب المشكلة وتاريخها:
وبحسب التقرير، فإن عدد الأسابيع التي انقضت منذ بدأ العد بنظام الـ GPS في 5 يناير 1980 يتم تتبعها بواسطة أقمار GPS الصناعية، ويتم بث رقم الأسبوع كعدد صحيح بدون إشارة 10 بت مع حد 1024 قيمة، من 0 إلى 1023، مما يشير إلى أن النظام يعيد تعيين كل 1024 أسبوعًا، وكان أول حدث يوم الأحد 22 أغسطس 1999 م، تبعه 7 أبريل من هذا العام، في حين أنه لم تتم جدولة التمرير الثالث حتى يوم الأحد، 21 نوفمبر 2038، فإن روتينًا للتحقق من السلامة اكتشف الخطأ الذي سيعيد تعيين رقم أسبوع GPS يوم الاثنين، 24 أكتوبر.
السبب وراء الخطأ
وقد اعترف غاري ميلر، مشرف نظام تحديد المواقع العالمي، بارتكاب الخطأ، وهو خطأ بسيط في التقدير، حيث تم تقديم الخطأ في نهاية عام 2019 وهو موجود في الإصدارات 3.20 و3.21 و3.22. أحدث إصدار رسمي مع الإصلاح هو 3.23.1، بدءًا من 9 سبتمبر 2021.
وقد أبدى القائمون على صيانة توزيعات Linux المختلفة، قلقهم من أن الخطأ قد يؤدي إلى "حالة الذعر الحقيقية لعام 2000"، وقاموا بتطبيق التصحيح، وقد أصدر كل من Debian وUbuntu الإصلاح.
خطأ GPSD
تم اكتشاف هذا الخطأ في يوليو من هذا العام، وتم الآن إصلاح الكود الخطأ (المكتوب قبل عامين)، لكن التحدي الآن هو التأكد من أن كل تطبيق وجهاز ينشر GPSD قد حصل على التحديث الصحيح.
ويُطلق عليه من الناحية الفنية اسم GPS Week Rollover، وهو يحدث بسبب تصميم بروتوكول GPS، والذي غالبًا ما تتم مراقبته عن كثب من قبل الشركات المصنعة، فيما كانت المرة الأولى التي حدث فيها ذلك في 21 أغسطس 1999 (نهاية يوم السبت)، والمرة الثانية كانت في 6 أبريل 2019 (نهاية يوم السبت)، ويجب أن يحدث التكرار التالي في نوفمبر 2038، لكن الرمز الخطأ داخل GPSD تسبب في طرح 1024 أسبوعًا في 24 أكتوبر 2021، وهذا يعني أن خوادم NTP التي تستخدم إصدار GPSD ستعرض الوقت / التاريخ لشهر مارس 2002.
من صفر إلى 100
عندما طُلب منه تقدير احتمالية أن تسوء الأمور نتيجة عدم قيام الأشخاص بتصحيح هذا الخطأ، قال ميلر: "اعتمادًا على جهاز استقبال GPS / GNSS قيد الاستخدام، وكيفية تكوينه، تكون الفرصة إما 0 في المائة أو 100 في المائة، حيث لن تتأثر الأجهزة التي تم تكوينها لإخراج NMEA "قياسي"، وستتأثر الأجهزة، مثل تلك الموجودة في u-blox، والتي تعمل في وضع الرسائل الثنائية".