Category Archives: 하드웨어

자급제 단말기 SKT/KT 3G HD 보이스(와이드밴드 오디오) 사용법

국내에 단말기 자급제가 정착된 지도 제법 오래 되었지만, 아직까지는 유럽 국가처럼 아무 설정 없이 단말기의 모든 기능을 완벽하게 사용하기는 전산을 완전히 갈아 엎지 않는 한 어렵다. 한때는 외국산 LTE 단말기를 사용하려면 이통사 전산에 등록해야 하는 시절도 있었지만, 이제는 LTE 밴드만 맞으면 등록시켜 주는 정도까지 되었고, 이제 남아있는 것은 3G HD 보이스, VoLTE 등의 기능 정도다.

3G HD 보이스(와이드밴드 오디오)는 3G 서킷 스위치(CS) 망에서 AMR-WB 코덱을 사용하는 음성 통화이다. 소니 에릭슨 시절 정발된 엑스페리아 일부 기종이 AMR-WB를 지원하기는 했지만, 통화 양방이 모두 AMR-WB를 사용해야 하고 그것도 통신사 안에서만 가능하였기 때문에 아이폰 5가 등장하기 전까지는 국내에서 거의 기억하지 않았다.

아이폰 5가 정발된 이후 통신사 전산이 개선되어 KT는 3G HD 보이스를 모든 자급제 단말기에 대해서 개방하였고, SKT는 한동안 자사를 통해 유통되는 단말만 3G HD 보이스를 허용하였다가 최근에서야 자급제 단말에도 개방하였다. 물론 바로는 안 되고 별도로 IMEI를 등록(통신사 지점에서 모델명 변경)해야 한다. KT의 경우 해외 단말기에 최초로 USIM을 장착하면 전산상에서 “OPENMODEL1/2″로 인식하고, SKT의 경우 “OMD DEFAULT 핸드셋”으로 인식한다. (홈페이지 상 기기 모델로 구분 가능) 이 모델을 변경해 주어야 3G HD 보이스를 사용할 수 있다. VoLTE와 비슷하게 현재는 같은 통신사를 사용하고 VoLTE/3G HD 보이스를 사용하는 사람끼리만 HD 보이스 통화가 가능하다.

KT의 경우 3G 전용 휴대폰은 PTA-TYPE1HD(PTA-TYPE1과는 다름), LTE 지원 휴대폰은 PTA-TYPE3HD(PTA-TYPE3과는 다름)로 모델명을 변경하면 된다. PTA-TYPE2/4는 각각 3G/LTE 태블릿에 해당한다. (출처: 토렌트고고) SKT의 경우 한동안 이렇게 사용하는 것이 불가능하였다가, 최근에서야 ODH2(OMD DEFAULT 핸드셋_3G HD Voice)로 모델명 변경이 허용되었다. (출처: 뽐뿌클리앙) 이 외 통신사를 통해 정발된 3G HD 보이스 지원 단말기는 유통한 통신사마다 정책이 다르다. MVNO(알뜰폰)을 사용하는 경우, 알뜰폰 회사마다 모회사(SKT/KT) 전산 접근 권한이 다르기 때문에 알뜰폰 고객센터에서 변경이 불가능하면 모회사 휴대폰을 사용하는 사람을 USIM 기변 상태로 모델명 변경을 하면 가능하다.

kt_pta_type3

문제는 이러한 작업을 동네 대리점에서는 해 주지 않으려고 하고 114에 전화를 걸면 신분증을 팩스로 보내야 하기 때문에 오프라인으로 하려면 각 통신사 지점을 찾아가야 한다. KT의 경우 대전 시내 서로 다른 2개 지점에서 모델명 변경 요청 시 신분증만 제시하면 가능하였다. (안드로이드나 iOS가 아닌 휴대폰은 IMEI 화면을 표시해 두는 것을 추천) KT 개통 이력이 없는 단말기의 경우 전산상에서 미등록 단말기로 분류되므로, 한 번은 USIM 기변을 한 상태로 대리점을 찾는 것을 추천한다. 여러 대의 단말을 동시에 등록할 경우 USIM 기변 이력만 있으면 된다. 아직까지 SKT는 시도해 보지 않았다.

3G HD 보이스는 표준 요금제에서도 사용 가능하다. 자신의 휴대폰이 3G HD 보이스를 지원하는 지 여부는 제조사에 문의해야 한다. 블랙베리 10 OS를 탑재한 휴대폰은 모두 지원하며, Jolla 역시 지원한다. 소니 휴대폰의 경우 다이얼러에 *#*#7378423#*#*(SERVICE)을 입력한 다음 Service Info -> Configuration과 같은 메뉴에서(기종마다 세부 항목은 다를 수 있음) 부트로더 언락 상태와 함께 Available Speech Codec에 AMR-WB가 있는 지 여부로 판단 가능하다. 블랙베리 10 OS의 전화 통화 화면에서는 HD 보이스 사용 여부가 시간 표시줄 위에 나타나지만, 표시기가 없는 휴대폰의 경우 통화 음질 등으로 판단하는 방법밖에 없다.

IMG_20141030_202035

Enabling Qualcomm diagnostic mode on Jolla

Since Jolla uses Qualcomm MSM8930AA, it is possible to use Qualcomm diagnostic tools in theory. They are not available by default and the way to enable this functionality is not yet discovered. I poked various options of usb-moded but diagnostic mode did not came out. I ended up editing some files and finally managed to get the diagnostic mode on my Jolla.

DISCLAIMER: you may void your warranty, especially poking with various Qualcomm-related tools. You have been warned.

usb-moded files are located under /etc/usb-moded and there are several ini files defining modes. USB mode selection UI gives options for PC Suite, Developer mode, Charging only. Those two modes are defined in /etc/usb-moded/dyn-modes/developer_mode-android.ini and pc_suite-android.ini. The file contains USB gadget settings like vendor and product ID, and most importantly, USB mode.

What is exposed via USB interface is determined by /sys/class/android_usb/android0/functions file. Directly modifying sysfs values seems not to work, only via editing usb-moded configuration files. usb-moded changes these values accordingly to the INI file. This is setting for developer mode.

$ cat /etc/usb-moded/dyn-modes/developer_mode-android.ini 
[mode]
name = developer_mode
module = none
network = 1
network_interface = rndis0

[options]
sysfs_path = /sys/class/android_usb/android0/functions
sysfs_value = rndis
sysfs_reset_value = none
softconnect_path = /sys/class/android_usb/android0/enable
softconnect = 1
softconnec_disconnect = 0
idProduct = 0A02

To enable diagnostic mode, you can append diag into sysfs_value and extra lines like this (you must be root to edit INI files):

$ cat /etc/usb-moded/dyn-modes/developer_mode-android.ini 
[mode]
name = developer_mode
module = none
network = 1
network_interface = rndis0

[options]
sysfs_path = /sys/class/android_usb/android0/functions
sysfs_value = rndis,diag
sysfs_reset_value = none
softconnect_path = /sys/class/android_usb/android0/enable
softconnect = 1
softconnec_disconnect = 0
idProduct = 0A02
android_extra_sysfs_path = /sys/class/android_usb/android0/f_diag/clients
android_extra_sysfs_value = diag

You need to restart phone or “systemctl restart usb-moded.service” to take the effect. When the file is modified, selecting developer mode on USB connection also activates diagnostics interface on USB. On Windows system there is no driver available for newly added diagnostics port. You can use driver from other Qualcomm-based devices, but the device name should include “diagnostics port”. I used driver from LTE USB stick.

If device is normally detected, you can now use Qualcomm tools to poke Jolla’s radio. Be careful not to brick this part! They are independent from OS!

When there are problems in USB usage, restore the values to original. Back up your system before potentially dangerous operations!

Extracting official firmware image of Casio G’zOne LTE (C811)

Most stock rom of Casio G’zOne 4G LTE (C811) is extracted from stock devices after uploading corresponding firmware. Verizon also supports firmware restoration tool from PC. There were some efforts to extract real stock firmware from that image but that never happened. I analyzed the Verizon firmware restoration tool and how to extract (not flash) firmware images uploaded on NEC Casio server.

There are some INI files bundled with Verizon tool (TL-Bootstrap). It specifies base address where all required tools are uploaded. When executed, the program checks all required tools’ version from http://baseaddress/ToolVersion.txt, downloads newer version when available. Real upgrade processes are hidden in the tool downloaded by bootstrap. Latest version of firmware is checked via /files.txt which contains version, size and some other information. Downloading firmware itself is straightforward by using filename from the text file, but only latest version is available from official server. All previous versions were deleted.

The firmware consists of single ZIP file, which then contains single MBN file for flashing. Despite same extension as Qualcomm tools, it uses proprietary format to encode and encrypt the image. Metadata is located at the last 2KB of MBN file. It starts with header, something like version and number of partitions. Each partition record basic information of partition and “flags”. EXT4 partition images are stored in standard sparce format which could be restored using simg2img. Other images stored with trailing zero bytes stripped, with separate original size information. All binary data except header is XOR encrypted, which differs among partition and even among firmware version.

I deduced XOR keys by comparing “extracted” file system images with encrypted images, which share same header bytes. XOR key of EXT4 sparce partition is also easily deducible since they use standard Android magic numbers. Attached source code calculates XOR key and extracts file system image. Probably works on Linux and OS X.

eut_extract.c code is here: https://gist.github.com/peremen/71330cbb4a6556358b938e0e353255a6

Using the attached source code, you can obtain “pure” stock ROM which is not altered by flashing and dumping.

블랙베리 Z10으로 LG U+ LTE 네트워크 사용

펌웨어 장난을 치다가 수리 보낸 Z10이 드디어 돌아왔다. 갈 때는 3G 전용 모델인 STL100-1이 갔으나 돌아올 때에는 북미용 LTE 모델인 STL100-3이 돌아왔다. Z10은 LTE 밴드에 따른 모델이 총 3개가 있는데 이 중 STL100-2는 800/900/1800/2600, STL100-3은 700/850/1700/1900을 지원하며 나머지 하나의 모델은 Verizon 전용이라서 우리와는 인연이 없다. 내 주 회선이 KT라서 STL100-2가 아니면 3G로만 써야 하는 게 좀 아쉽긴 하지만, SKT LTE 네트워크는 정상적으로 붙는 것을 보았고 LG U+도 가능할까 하는 생각이 들었다.

우선 LTE 라우터를 꺼낸 다음 mini SIM을 micro SIM으로 잘랐다. 내 커터가 좀 안 좋아서 그런지 아니면 원래 그런지 모르겠지만 자르고 나서 모서리를 좀 다듬어 주어야 다시 원래 형태로 결합할 수 있었다. 다시 LTE 라우터에 결합했을 때 4G 네트워크를 정상적으로 잡는 것을 확인한 다음 Z10에 물렸다. 그런데 생각대로 LTE 네트워크를 잘 잡지 못했다.

블랙베리 10 OS의 설정 – 네트워크에서 선택 가능한 조합은 STL100-1의 경우 2G, 3G, 3+2G 세 종류였고 STL100-3의 경우 4+3+2G, 4+3G, 3+2G, 3G, 2G가 선택 가능했다. 문제는 4+3G 및 4+3+2G 조합을 선택했을 때 바로 4G부터 연결하는 것이 아니라 3G를 먼저 찾은 다음 4G로 연결하는 것 같았다. 그래서 기본 설정인 4+3+2/4+3을 선택했다 하더라도 LG U+ 네트워크에는 연결하지 못하는 것이다. 이 문제를 해결하려면 우선 APN을 편집하여 “internet.lguplus.co.kr”을 추가한 다음 escreen을 불러와야 한다. escreen을 부르는 방법은 검색 몇 번으로 찾을 수 있어서 생략한다. escreen을 불러온 다음 맨 아래쪽의 General Radio 섹션에서 Enabled RAT에서 LTE_ONLY를 선택한 다음 재부팅해야 LG U+ LTE 네트워크를 인식하였다.

escreen 편집

escreen 편집

한 번 LG U+ LTE 네트워크를 잡으면 네트워크 우선 순위 설정을 건드리지 않으면 계속 연결되어 있다. 하지만 네트워크 우선 순위 설정을 조금이라도 건드리면 LTE 네트워크와 연결이 끊겨 버린다. 위 설정 이후 재부팅하면 네트워크 우선 순위는 4/3/2G처럼 보이지만 이것을 수정하면 인터넷 연결이 끊긴다.

네트워크 우선 순위 관리

네트워크 우선 순위 관리

VoLTE를 어떻게든 뚫어 보려고 음성 통화를 PS Only로 변경도 해 보았지만 114에 연결은 안 되는 것 같았고, SMS나 MMS도 안 된다는 말이 있었다. 어쩌면 이건 라우터 USIM이라서 걸리는 제약인 것 같다. 아래 스크린샷에서도 보는 것처럼 BBM 연결은 4G 망에서 안 되는 것 같다. (어차피 BBM 친구가 얼마 없긴 하지만)

LG U+ LTE

LG U+ LTE

급할 때에는 LTE 라우터 대신 이걸 쓸 수 있다는 것 정도에만 만족해야겠다. 어차피 LTE가 되는 태블릿이 없어서. Q10이나 Q5 같은 다른 블랙베리 10 모델은 가지고 있는 게 없어서 확신하기는 어렵지만, SKT LTE 850MHz에 연결할 수 있다면 LG U+에서 데이터 전용으로 시도해 볼 수는 있을 것이다.

블랙베리 Z10 10.2 업데이트 시 한글 SMS 오류 해결

그 동안 CrackBerry 사이트에 유출되어서 올라오는 10.2 릴리즈를 계속 모니터링하다가, 최근 10.2.0.1767 버전이 정식 릴리즈되었다는 소식을 듣고 과감하게 올렸다. 10.1 MR 버전에서는 escreen을 사용해도 KT APN을 입력할 수 없었던 문제가 있었지만, 10.1 초기 버전에서는 Google 서비스에 로그인할 때 2단계 인증을 지원하지 않아서(애플리케이션별 암호를 생성해야 함) 어차피 데이터 차단을 걸어 둔 마당에 2단계 인증이 더 중요하다는 생각으로 10.1 MR을 계속 유지해 왔다. 하지만 MMS를 못 받는다는 치명적인 문제가 있었기 때문에 10.2를 과감하게 올렸다. 전에 썼던 N9는 데이터와 MMS가 별개로 놀아서 좋았는데, Z10은 데이터가 죽으면 MMS가 같이 죽어서 불편하다.

그러니까 펌웨어 버전별 상태 요약:

  • 10.1.0.1720 (릴리즈 10.1.0.273): KT APN 편집 가능, Google 2단계 인증 미지원
  • 10.1.0.4633 (릴리즈 10.1.0.4181): KT APN 편집 불가, Google 2단계 인증 지원
  • 10.2.0.1767 (릴리즈 10.2.0.415): KT APN 편집 가능, Google 2단계 인증 지원

Google 2단계 인증 지원이 없으면 안 되기 때문에 과감히 10.2.0.1767로 올렸으나, 이번에는 치명적인 SMS 한글 깨짐 문제가 발생했다. 내가 보내는 메시지는 제대로 한글이 보이나, 받는 메시지의 한글이 상당 부분 깨졌다. 일부 메시지는 깨진 부분이 중요하지 않아서 내용을 유추할 수 있으나, 일부는 메시지 전체가 깨져 버리는 경우가 있다. 페이스북에도 올렸던 이 사진을 참고하면 된다.

야이 개새끼들아

야이 개새끼들아

나는 이 기계를 Qt Contributor’s Summit에서 얻은 거라서 징징댈 판매자가 없었고, KT는 블랙베리를 정식 유통했던 적이 없었기 때문에 이 상황에서의 흔한 해결책인 “너님 통신사에 문의하세요”는 “즐”이라는 응답만 돌아올 게 뻔하다. 설상가상으로 BlackBerry 포럼은 공식 지원을 받을 수 있는 창구가 아니고, Incident Report 서비스를 이용하려면 $49가 나간답니다 고갱님. 1599-5119 한국 서비스 센터에 전화해 봤자 Z10은 한국에 안 들어왔기 때문에 FAIL. 이건 분명히 BB 잘못인데 내 돈 나가는 꼴은 보기 싫어서 조금 더 연구를 해 봤다.

10.2가 정식 릴리즈가 되기 전 CrackBerry에 돌던 방법으로는 하이브리드 롬이 있는데, BlackBerry 10 OS의 구조상 가능한 일이다. BB10 OS 릴리즈 10.a.b.c가 존재하면, 라디오 파일 릴리즈는 10.a.b.c+1로 이루어진다. 하이브리드 롬은 OS 10.a.b.c의 롬 파일과 라디오 10.a.b.d를 같이 밀어넣는다는 것이다. (c != d) OS 업그레이드는 크게 두 개의 .bar 파일로 이루어지는데, OS 업그레이드용 .bar 파일은 실제 데이터인 .signed 및 메타데이터를 포함한 zip 파일이기 때문에 오토로더를 만들 때에는 .signed 파일만 있으면 된다. Darcy’s BlackBerry Tools, Sachesi 모두 사용자가 가지고 있는 .signed 파일에서 오토로더 생성을 지원하며, 이 둘은 모두 cap.exe 실행 파일을 사용하여 .signed 파일에서 오토로더를 만든다. (.exe 파일이 튀어나오고 이 파일을 실행하면 펌웨어를 덮어씀)

2013/11/12 업데이트: 이 방법을 쓰고 며칠 후 폰이 제대로 응답하지 않다가, 재부팅 시 블랙베리 로고에서 진행되지 않는 현상이 나왔다. 라디오 버전과 OS 버전 불일치시 발생할 수 있는 증상 중 하나이며, 버전 불일치가 해결되지 않는 한 이 문제를 잡을 수 없다. 덕분에 Z10을 AS 보냈으며, 이와는 별개의 채널로 BB 측에 이 문제를 통보한 상태이다.

CrackBerry 사이트를 뒤지는 중 10.2.0.1767 OS/1048 라디오 롬을 조합해서 쓴다는 보고를 발견하였고, 이 조합이 성공할 것인지 반신반의하는 상태에서 일단 밀어넣었다. 라디오 파일만으로 오토로더를 생성할 수는 있으나, 이렇게 만들어진 오토로더를 사용하면 예상과는 달리 OS가 없다는 듯인지 빨간 불만 계속 깜빡거리고 부팅이 진행되지 않는다. 따라서 오토로더를 만들 때에는 무조건 OS/라디오를 짝지어 주어야 하고, 오토로더 실행 이후에는 휴대폰이 무조건 포맷된다. 백업 해 두길 잘 했지.

라디오 롬 파일은 여기에서 구할 수 있으며, 내 경우에는 Z10 STL100-1을 쓰기 때문에 STL100-1용 10.2.0.1048 라디오 파일을 구했다. Darcy’s BB Tools를 사용하여 미리 받아 둔 10.2.0.1767 OS 이미지와 1048 라디오를 합친 오토로더를 생성하고 이걸로 밀어넣은 결과…

하이브리드 OS/라디오

하이브리드 OS/라디오

escreen을 사용해서 APN 강제 지정도 가능하고 한글 SMS가 지금까지는 깨지지 않았다. OS 버전과 무선 버전이 따로 놀면 이제 성공이다.