전체 검색

글, 태그와 카테고리를 검색하고 바로 이동해요

고객사에 배포하러 갔다가, USB 테더링 도구를 만들었어요

핫스팟을 쓸 수 없었던 고객사 배포 현장을 계기로 GalaxyBridge를 만들었어요. 안드로이드와 맥을 USB로 연결하고, 실제 데이터 전송과 재연결까지 확인한 이야기예요.

2026. 09. 15. 09:56:534분 읽기프로젝트
조회 4
USB 케이블로 연결된 안드로이드 휴대폰과 은색 맥 노트북의 삽화
휴대폰과 맥을 USB 케이블로 연결한 모습을 이미지로 재구성한 장면. AI 생성 삽화.

고객사에 배포하러 갔는데 인터넷을 쓸 수 없는 상황이 생겼어요. 핫스팟 사용이 아예 제한된 환경이었거든요. 작업하러 가져간 맥에서 네트워크를 쓰지 못하니 꽤 불편했어요.

이 일을 계기로 안드로이드 휴대폰과 맥을 USB로 연결해 인터넷을 쓸 수 있는 유틸리티를 만들었어요. 이름은 GalaxyBridge예요.

휴대폰의 인터넷을 케이블로 가져오고 싶었어요

핫스팟은 휴대폰의 인터넷을 와이파이로 나눠 쓰는 기능이에요. USB 테더링은 같은 일을 케이블로 하는 방식이고요.

제가 필요했던 건 단순했어요. 휴대폰을 맥에 연결하고, USB 테더링을 켜면 맥에서도 인터넷을 쓰는 것. 그 연결을 맡아줄 도구를 직접 만들어보기로 했어요.

GalaxyBridge는 애플 실리콘 맥을 대상으로 만든 Rust 기반 USB 테더링 드라이버예요. 휴대폰이 제공하는 RNDIS라는 USB 네트워크 방식을 맥의 네트워크 연결로 이어줘요. 쉽게 말하면, 휴대폰과 맥 사이에서 인터넷 데이터를 주고받을 수 있도록 다리를 놓는 역할이에요.

연결한 다음에 벌어지는 일까지

한 번 인터넷이 연결되는 것과 계속 꺼내 쓸 수 있는 도구가 되는 것 사이에는 챙길 일이 있었어요.

케이블을 뽑으면 연결을 정리해야 하고, 다시 꽂으면 다시 연결할 수 있어야 해요. 사용하던 와이파이가 살아 있다면 USB 연결이 끝난 뒤 그쪽으로 돌아갈 수 있어야 하고요.

그래서 수동 연결뿐 아니라 자동 재연결도 지원하도록 만들었어요. 맥에 자동 연결 서비스를 설치해두면 휴대폰이 연결되기를 기다렸다가, USB 테더링이 활성화되었을 때 연결을 시작해요. 케이블이 빠졌다가 다시 연결되는 상황도 처리하고요.

휴대폰 쪽에서 USB 테더링을 켜는 과정은 별개예요. 기기에 따라 기본 USB 동작을 테더링으로 설정할 수 있지만, 그렇지 않은 경우에는 연결 후 직접 켜야 해요.

만드는 계기는 “인터넷을 쓰고 싶다”였는데, 구현에는 연결이 끝난 뒤 맥의 네트워크 상태를 정리하는 일도 포함됐어요.

USB 데이터를 읽는 일과 맥을 설정하는 일을 나눴어요

네트워크를 연결하는 프로그램에는 권한이 필요한 부분이 있어요. 그렇다고 휴대폰에서 들어오는 데이터를 읽는 작업까지 모두 같은 권한으로 실행할 필요는 없었어요.

GalaxyBridge에서는 USB 데이터를 읽고 해석하는 부분을 별도 프로세스로 분리했어요. 이 프로세스는 전용 계정과 macOS의 App Sandbox 안에서 동작해요. 관리자 권한이 필요한 네트워크 설정은 다른 프로세스가 맡고요.

앱 샌드박스는 프로그램이 접근할 수 있는 범위를 제한하는 장치예요. 여기서는 외부에서 들어오는 USB 데이터를 다루는 부분과, 맥의 네트워크를 바꾸는 부분의 역할을 나누는 데 사용했어요.

기존 테더링 드라이버를 감싸는 방식 대신 독립적으로 구현했고, macOS의 시스템 무결성 보호인 SIP를 끄거나 커널 확장을 설치하는 과정도 요구하지 않아요. 세부 구성은 구현 구조 문서에 정리해두었어요.

실제로 인터넷이 오가는지 확인했어요

실기기 검증은 M3 Pro 맥과 Galaxy S25 Ultra 조합에서 진행했어요.

와이파이가 켜져 있으면 인터넷이 된다는 사실만으로 USB 테더링이 동작한다고 판단하기 어려워요. 그래서 테스트 요청이 USB 네트워크를 통해 나가도록 지정한 상태에서 확인했어요.

v0.2.0 검증 기록에는 세 차례의 관찰 구간에서 총 42회의 HTTPS 요청이 성공한 결과가 있어요. 별도로 8MiB 다운로드와 2MiB 업로드도 확인했고요.

케이블을 실제로 뽑고 다시 연결하는 테스트도 진행했어요. 와이파이를 켜둔 두 차례의 분리 테스트에서는 USB 제거를 감지한 뒤 약 0.7~0.9초 만에 새로운 HTTPS 요청이 성공했어요. 다만 이 결과가 기존 연결까지 끊김 없이 이어진다는 뜻은 아니에요.

아직 검증한 기기 조합은 제한적이에요. 다른 안드로이드 기기나 macOS 버전, 잠자기와 재부팅 이후의 동작까지 모두 확인한 단계는 아니고요. 현재는 제가 확인한 환경에서 실제 데이터 전송과 재연결을 검증한 초기 실험 버전이에요. 구체적인 조건과 결과는 실기기 검증 기록에서 볼 수 있어요.

시작은 고객사 배포 현장에서 겪은 불편함이었어요. 그 불편함을 계기로 휴대폰과 맥 사이의 USB 연결을 직접 다뤄보게 됐고, 연결과 해제까지 책임지는 작은 도구를 만들었어요.

GalaxyBridge는 GitHub에 공개해두었어요. 안드로이드와 맥을 함께 쓰면서 USB 테더링이 필요했던 분이라면, 지원 범위와 검증 기록을 함께 살펴보셔도 좋겠어요.

이야기 나누기

반응을 남기고 새 글 소식을 받아보세요.

댓글0
서로를 존중하는 대화를 남겨주세요.
아직 남겨진 대화가 없어요
첫 댓글을 남겨 대화를 시작해보세요.
새 글 구독
새 글이 공개되면 이메일로 알려드려요.