Linux: ручная установка географического положения

Linux: ручная установка географического положения

У меня есть настольная рабочая станция под управлением Linux (Debian Sid, если это актуально). У нее нет GPS или других специальных средств для определения своего собственного географического положения (Gnome Maps правильно помещает ее в Рим, Италия, с ошибкой около 11,5 миль!).

Есть ли способ узнать, где он находится?

я виделэтот вопрос, но он работает только с браузерными приложениями. Я хотел бы переопределить позиционирование по умолчанию (т. е. то же самое, что Gnome Maps использовал для получения своих приблизительных данных).

решение1

В Linux нет «стандартного» API географического положения – некоторые программы получают обобщенные данные изgeoclue(часть GNOME), в то время как другие взаимодействуют с устройствами GPS/GNSS/Wi-Fi самостоятельно (дублируя то, что делает geoclue).

GNOME Maps всегда получает свое местоположение от демона Geoclue. Не имея GPS, Geoclue получает свое приблизительное местоположение на основе 1) вашего IP-адреса и 2) ваших ближайших сетей Wi-Fi (которые он отправляет в службу определения местоположения Mozilla, но может использовать сети Google, если указан ключ API). Поскольку у вас нет и Wi-Fi, все зависит от того, где, по мнению базы данных геолокации IP, вы находитесь.

В настоящее время Geoclueнеесть параметр для установки фиксированного местоположения. Ваши оставшиеся варианты:

  • Взломайте исходный код Geoclue, чтобы он всегда возвращал фиксированный ответ.
  • Замените сам демон Geoclue на собственный (написанный на Python или любом другом языке, который имеет приемлемые привязки к API D-Bus) и сделайте так, чтобы он всегда возвращал фиксированный ответ.
  • Заставьте Geoclue думать, что подключено устройство GPS, установивgpsdдемон и использование включенногоgpsfakeинструмент (см. ниже).
  • Измените URL-адрес службы определения местоположения Mozilla в Geoclue так, чтобы он указывал на пользовательский веб-сервис, который всегда возвращает фиксированный ответ.(Это упоминалось в теме Bugzilla, но поскольку у вас нет оборудования Wi-Fi, я не думаю, что Geoclue вообще будет спрашивать MLS...)
  • Добавьте адаптер Wi-Fi, чтобы Geoclue мог сканировать близлежащие сети и сопоставлять их с вашим местоположением через службу определения местоположения Mozilla (для этого также потребуется NetworkManager).

Для программ, которые не используют Geoclue, но имеют поддержку GPS, напрямую обращаясь кgpsd(например, Firefox), вы можете использоватьgpsfakeчтобы заставить его делать вид, что всегда подключен датчик GPS. Однако у него нет простых опций для указания координат – вам нужно будет предоставить ему захваченный вывод реального устройства GPS, возможно, отредактированный вручную, чтобы иметь правильные координаты.

Связанный контент