
같은 폰인데 통신사마다 기능이 다른 이유
똑같은 아이폰인데 어떤 통신사에서는 와이파이 콜링이 되고 어떤 통신사에서는 안 되는 경험, 해보셨나요? 알뜰폰으로 옮겼더니 VoLTE나 5G 표시가 이상해졌다는 이야기도 흔하죠. 이런 차이는 대부분 하드웨어 때문이 아니에요. 폰 안에 숨어 있는 통신사 설정 파일(carrier settings) 때문이에요.
Carrier-Explode는 바로 이 파일들을 해독(decode)해서 사람이 읽을 수 있게 보여주는 프로젝트예요. 아이폰, 구글 픽셀, 삼성 갤럭시는 통신사 설정을 저마다 다른 형식으로 숨겨두고 있어요. 이 프로젝트는 그걸 풀어서 통신사별로 어떤 기능이 켜져 있는지, 어떤 값이 들어 있는지 웹에서 둘러볼 수 있게 해줘요.
통신사 설정 파일이 뭐냐면
쉽게 말하면 통신사 전용 피처 플래그(feature flag) 묶음이에요. 서비스를 개발할 때 '이 기능은 A 그룹 사용자에게만 켜자' 하고 설정값으로 제어하잖아요? 스마트폰도 똑같아요. 유심(SIM)을 꽂는 순간 폰이 통신사가 어디인지 알아내고, 그 통신사에 맞는 설정 묶음을 불러와 기능을 켜고 꺼요.
통신사를 알아내는 기본 수단은 MCC/MNC 코드예요. MCC는 국가 코드, MNC는 통신사 코드인데요, 한국은 MCC가 450이고 SKT는 450-05, KT는 450-08, LG U+는 450-06이에요. 알뜰폰은 보통 모회사 망의 코드를 함께 써요. 그래서 GID1이나 SPN(서비스 제공자 이름) 같은 정보로 한 번 더 구분하죠. 알뜰폰에서 설정이 제대로 안 잡히는 문제가 자주 생기는 것도 이 때문이에요.
설정 파일에는 이런 값들이 들어 있어요.
- VoLTE, VoNR(5G 음성통화), 와이파이 콜링 지원 여부
- 5G SA/NSA 사용 여부와 관련 파라미터
- APN 설정, 테더링(핫스팟) 허용 여부
- MMS 크기 제한, 비주얼 보이스메일, RCS 메시지 설정
- 안테나 막대를 몇 개 보여줄지 정하는 신호 세기 기준값
제조사마다 형식이 다 달라요
이 프로젝트가 의미 있는 이유는 세 회사가 설정을 저장하는 방식이 완전히 달라서, 그동안 한눈에 비교하기가 어려웠기 때문이에요.
아이폰은 캐리어 번들(carrier bundle)이라는 패키지를 써요. 가끔 '통신사 설정 업데이트' 팝업이 뜨는 거 보셨죠? 이 번들이 갱신되는 거예요. 안쪽은 주로 plist(애플의 설정 파일 형식) 파일로 되어 있어요.
픽셀은 안드로이드 오픈소스(AOSP)의 CarrierConfig 구조가 바탕이에요. carrier_volte_available_bool 같은 키-값 쌍으로 기능을 정의하죠. 픽셀은 여기에 구글이 따로 관리하는 통신사 설정을 바이너리(protobuf) 형태로 더 얹기 때문에, 사람이 바로 읽기는 어려워요.
갤럭시는 삼성 고유의 CSC(Consumer Software Customization) 체계를 써요. 국가·통신사별 코드가 붙은 펌웨어 구성 안에 기능 설정이 들어 있어요. 일부 파일은 인코딩돼 있어서 별도 도구 없이는 내용을 보기 힘들어요.
Carrier-Explode의 핵심은 이렇게 서로 다른 형식을 풀어서 같은 기준으로 나란히 볼 수 있게 정리해준다는 점이에요.
업계 맥락: 투명성의 문제
지금까지 이런 정보는 XDA 같은 커뮤니티에서 루팅이나 펌웨어 분석을 하는 일부 사용자들끼리만 주고받았어요. 통신사나 제조사가 '이 기능은 이 통신사에서 꺼져 있어요'라고 친절하게 알려주는 경우는 거의 없거든요. 그래서 사용자는 기능이 안 될 때 원인을 알기 어려웠어요. 폰 문제인지, 요금제 문제인지, 통신사가 일부러 막은 건지 말이에요.
설정을 공개적으로 비교할 수 있으면 '같은 기능을 A 통신사는 열어뒀는데 B 통신사는 막았다' 같은 사실이 드러나요. 소비자와 통신사 사이의 정보 격차가 그만큼 줄어드는 거죠.
한국 개발자에게 주는 시사점
첫째, 통신·모바일 분야 개발자에게는 디버깅 도구로 쓸모가 있어요. VoWiFi, RCS, 테더링처럼 통신사 설정에 따라 동작이 달라지는 기능을 다룬다면, 문제가 앱 코드에 있는지 단말 설정에 있는지 가리는 데 큰 힌트가 돼요.
둘째, 설정 기반 아키텍처를 공부하는 교재로도 좋아요. 수천 개 통신사와 수백 종 단말의 조합을 코드 분기가 아니라 설정 데이터로 관리하는 구조거든요. 서비스에서 피처 플래그나 원격 설정(Remote Config)을 설계할 때 참고할 만한 대규모 실전 사례예요.
셋째, 읽는 것과 고치는 것은 별개예요. 설정을 임의로 수정해서 막힌 기능을 억지로 켜면 망 안정성 문제가 생기거나 약관을 어길 수 있어요. 분석과 학습 용도로 쓰는 걸 추천해요.
마무리
한줄 정리: 내 폰에서 어떤 기능이 되는지는 하드웨어만으로 정해지지 않아요. 통신사가 내려보내는 작은 설정 파일이 함께 결정하는데, Carrier-Explode는 그 블랙박스를 열어 보여줘요.
통신사나 알뜰폰을 옮기면서 '왜 이 기능이 안 되지?' 하고 답답했던 적이 있으신가요? 이런 통신사 설정을 사용자에게 더 투명하게 공개해야 한다고 생각하시나요?
🔗 출처: Hacker News