신호가 없어도, 비행기 모드에서도 GPS는 작동할까?
작동한다. 그리고 그 이유를 알면 휴대폰 내비게이션에서 사람들이 헷갈려하는 것의 대부분이 풀린다. 휴대폰은 물어봐서가 아니라 들어서 자기 위치를 알아낸다. 데이터 연결이 실제로 사 주는 것은 속도와 지도다.
짧게 답하면 그렇다. 안테나가 하나도 뜨지 않는 산속에서도, 쓰던 유심이 아무 역할도 못 하는 나라에서도, 비행기 모드를 켜 둔 상태에서도 휴대폰은 자기가 어디 있는지 알아낼 수 있다. 비행기 모드가 위치 서비스까지 같이 꺼 버리지만 않으면 되는데, iOS에서는 끄지 않는다.
이 혼동은 한 번쯤 풀어 둘 만하다. 신호가 죽은 곳에서 지도 앱을 열었다가 회색 사각형 위에 파란 점 하나만 덩그러니 떠 있는 것을 보고 측위가 고장났다고 결론 내린 경험은 거의 누구에게나 있기 때문이다. 고장난 게 아니었다. 없어진 것은 지도 쪽이었다. 이 둘은 같은 화면에 겹쳐 그려질 뿐, 완전히 다른 두 개의 시스템이다.
휴대폰은 듣기만 할 뿐, 묻지 않는다
위성 측위 수신기는 이름 그대로 수신기다. 서른 개 남짓한 GNSS 위성이 쉬지 않고 신호를 내려보내는데, 그 내용은 사실상 "나는 11번 위성이고, 내 궤도는 이렇고, 내 시계는 지금 이 시각을 가리킨다"는 것이다. 신호는 우주에서 당신 쪽으로 한 방향으로만 흐른다. 휴대폰은 위성 쪽으로 아무것도 쏘아 보내지 않으며, 어떤 위성도 당신이 존재한다는 사실을 알지 못한다.
수신기는 그 방송 중 넷 이상이 도착한 시각의 아주 작은 차이로부터 네 개의 미지수를 푼다. 위도, 경도, 고도, 그리고 자기 안에 든 값싼 시계가 원자시계와 얼마나 어긋나 있는지. 이게 전부다. 필요한 것은 하늘이 어느 정도 트여 있다는 조건 하나뿐이다. 유심도, 데이터 요금제도, 와이파이도, 계정도, 구독도 필요 없다.
GNSS가 지구 어디에서나 공짜인 이유, 그리고 당신의 위치가 다 써서 없어지는 자원이 될 수 없는 이유도 여기에 있다. 위성은 듣는 사람이 있든 없든 계속 방송한다.
그러면 모바일 데이터는 무슨 일을 하고 있나
두 가지를 한다. 그리고 그 둘 중 어느 쪽도 측위 그 자체는 아니다.
첫 측위를 앞당긴다
위성을 빨리 찾으려면 수신기는 지금 위성들이 대략 어디쯤 있는지를 알고 있어야 한다. 그 정보, 그러니까 알마낙과 에페메리스는 위성 스스로도 방송하지만 아주 느리게 내려온다. 사전 정보 없이 전파로만 받아내려면 30초에서 몇 분까지 걸린다. 보조 GNSS는 똑같은 궤도 정보를 네트워크로 순식간에 내려받아, 수신기가 어느 쪽을 들여다봐야 하는지 미리 알게 해 주는 것뿐이다.
보조가 없으면 콜드 스타트가 된다. 측위는 어차피 잡힌다. 다만 더 오래 걸릴 뿐이다. 신호가 없는 곳에서 사람들이 실제로 체감하는 것은 사실 이 부분이고, 들머리에서 출발하기 전에 1분쯤 가만히 서 있는 것이 값어치를 하는 이유도 이것이다.
그 밑에 깔리는 지도
지도 타일, 즉 도로와 등고선과 위성 사진은 서버에서 받아오는 그림이다. 측위와는 아무 관계가 없다. 데이터가 없으면 좌표는 손에 들어오지만 그것을 그려 놓을 배경이 없다. 앞에서 말한 회색 사각형이 정확히 그 상태이고, 이것은 위치가 없는 것이 아니라 그림이 없는 것이다.
신호가 없을 때 그래도 어긋나는 것들
- 콜드 스타트가 길어진다. 앞에서 말한 그대로다. 출발 전에 트인 곳에서 1분쯤 여유를 주자.
- 깊은 협곡, 빽빽한 숲, 터널, 그리고 차량 실내는 모두 신호를 막거나 반사시킨다. 이것은 통신 커버리지와 아무 관계가 없다. 도심 한복판에서도 똑같이 일어나고, 그래서 시가지를 지난 경로가 가끔 건물 안쪽을 가로지르는 것이다.
- 와이파이 측위는 주변 네트워크 이름을 보고 실내에서 위치를 잡아 주는 방식인데, 데이터베이스 조회가 필요하다. 오프라인 상태의 실내에서는 위성만 남고, 그것은 사실상 거의 아무것도 남지 않는다는 뜻이다.
- 앱이 타일을 미리 저장해 두지 않았다면 지도는 빈 화면이다.
신호가 전혀 없는 곳에서 경로 기록하기
기록 앱 입장에서 정작 중요한 질문은 측위가 잡히느냐가 아니다. 그건 잡힌다. 중요한 것은 앱이 그 점을 어디에 놓느냐다. 주행 내내 메모리에 모아 두었다가 끝나고 한꺼번에 올리는 앱은, 측위 시스템 자체에는 없던 네트워크 의존성을 스스로 만들어 붙인 것이다. 지난 기록 목록을 서버에서 읽어 오는 앱은 거기에 하나를 더 붙인 것이고, 아픈 쪽은 이쪽이다. 터널에 들어가 앱을 열면 기록이 통째로 사라진 것처럼 보인다.
Roam(로암)은 구조적으로 반대쪽을 택했다. 측위점은 도착하는 그 순간 휴대폰 안의 데이터베이스에 커밋되고, 그 주행의 누적 수치와 같은 트랜잭션에 함께 들어간다. 그래서 이미 기록된 1킬로미터가 메모리에만 존재하는 구간이 아예 생기지 않는다. 기록 목록을 보여 주는 화면은 그 똑같은 로컬 데이터베이스를 읽으며, 그 밖에 읽을 곳이 없다. 저장소에는 이 기능 전체를 훑어 네트워크 관련 심벌이 하나라도 나타나면 빌드를 실패시키는 빌드 게이트가 들어 있다. 예전 버전이 실제로 목록을 서버에서 읽었고, 방금 적은 "터널 안에서 빈 목록" 바로 그 경험을 만들어 냈기 때문이다.
정직하게 예외를 하나 적자면 지도의 배경 이미지다. 그것은 다른 어떤 지도와도 똑같이 타일 서버에서 받아온다. 데이터가 없어도 경로선은 그려지고 측정되고 저장되지만, 그 뒤에 깔릴 도로는 나오지 않을 수 있다. 사라진 것은 세상의 그림이지 당신의 주행이 아니다.
자주 묻는 질문
비행기 모드에서도 GPS가 되나요?
됩니다. 비행기 모드는 송신기를 끕니다. 셀룰러가 꺼지고 기본적으로 와이파이와 블루투스도 꺼지죠. 하지만 GNSS 수신은 수동적인 동작이라 그대로 살아 있습니다. iOS에서는 위치 서비스가 별도의 스위치이고 비행기 모드가 그것을 끄지 않습니다. 다만 보조 GNSS가 궤도 정보를 내려받지 못하므로 첫 측위가 느려지고, 지도 타일은 나오지 않습니다.
GPS가 모바일 데이터를 쓰나요?
위치를 구하는 계산 자체는 데이터를 전혀 쓰지 않습니다. 보조 GNSS가 첫 측위를 앞당기려고 몇 킬로바이트짜리 궤도 정보를 내려받고, 지도 타일은 데이터를 아주 많이 쓸 수 있습니다. 다만 그것은 지도이지 측위가 아닙니다.
신호가 없으면 왜 "위치를 찾을 수 없음"이라고 뜨나요?
대개는 아직 끝나지 않은 콜드 스타트이거나, 하늘이 보이지 않는 곳에 있어서입니다. 밖으로 나가 가만히 서서 1분만 기다려 보세요. 앱이 느린 화면이 아니라 텅 빈 화면을 보여 준다면, 그 앱은 위성이 아니라 서버를 기다리고 있을 가능성이 큽니다.
로밍 요금 없이 해외에서 하이킹을 기록할 수 있나요?
가능합니다. 비행기 모드로 두고 평소처럼 기록하면 됩니다. 측위에는 비용이 들지 않고 네트워크도 쓰지 않습니다. 영향을 받는 것은 타일을 받아오는 지도뿐이니, 필요한 오프라인 지도가 있다면 떠나기 전에 내려받아 두거나, 빈 배경 위의 경로선을 그대로 받아들이면 됩니다.
주행을 잃지 않는 기록 앱
Roam은 측위점이 도착하는 그 순간, 주행 중인 누적 수치와 같은 트랜잭션으로 휴대폰에 기록합니다. 신호가 끊긴 구간은 직선으로 잇지 않고 끊긴 구간 그대로 남깁니다. 누적 상승은 GPS 고도가 아니라 기압 센서에서 읽습니다. 계정도, 로그인도, 동기화도 없습니다. 한 번의 주행을 온전히 기록하고, 보고, 다시 재생하는 것은 무료입니다.