SKT의 Band 1 (2.1GHz) LTE 정보

대략 3개월 전쯤부터 시내에 나가면 휴대폰에서 LTE가 잡히기 시작했습니다.
제가 지금 쓰는 엑스페리아 A는 LTE 밴드 1,19, 21밖에 지원을 안하는데 국내에서 잡힙니다. 일본전용인 밴드 19, 21은 제외하고 3G에 쓰이는 밴드1의 재활용일것이라 생각했습니다.
국내에는 3,5,8 밴드가 기존에 쓰이는것으로 알려져있습니다.

이번주부터 드디어 집에서도 새로운 밴드로 LTE가 사용이 가능해지더군요.

계측장비를 이용해서 어떤망인지 직접 확인한 결과를 올립니다. 제 예상대로 밴드 1이 맞습니다.

lte

자세하게 보고싶으신 분은 클릭하시면 원본화질로 보실 수 있습니다.

여기서 일반 사용자분들이 괄목할 정보들을 정리해 보자면..

우선 대역폭이 20MHz가 아닌 10MHz입니다.
EARFCN 150(2.125GHz Downlink) 한가지만 잡히고 다른 주파수는 잡히지 않습니다. 다른 통신사도 잡히지 않습니다.
레퍼런스 파워가 높지 않습니다. 12dBm에다가 10MHz의 블록수를 곱하면 enodeb에서 2W정도로 신호를 송출중이란 뜻인데 해외에 비해 확실히 망 구조가 조밀합니다.
하지만 일부 기지국만 2.1GHz를 가동중인듯 합니다.

LTE는 WCDMA와 같이 1.92MHz의 배수로 샘플링을 해야합니다
후.. 전에 장비에 전원을 잘못 연결하는 바람에 외장 GPS VCTCXO가 고장난 관계로 2의배수에서 소프트웨어 리샘플링을 하니 스캔하는데 시간이 오래 걸리네요.
조만간에 61.44MHz TCXO를 구입해서 지역별로 측정을 해봐야겠습니다.

지역별로 제가 다녀본 바로는 광역시 이상 시내쪽은 거의 잡힙니다.

대구 부산은 외곽도 어느정도 커버되고 있는듯 합니다.

그리고 요즘들어 몇몇 분이 호소하시는 수신률 문제도 이 때문으로 보입니다.
2.1ghz는 기지국이 기존망만큼 활성화가 되어있지 않다보니 이쪽으로 휴대폰이 접속되게 되면 수신률이 낮아 보이는 것입니다.
수신률이 캐리어 전체 수신률의 평균을 내는게 아닌 현재 접속되어있는 하나의 기지국 기준으로 계산을 하나 보니 생기는 현상입니다.
하지만 그렇다고 해서 기존 기지국이 사라지는게 아니고 수신률이 일정수준 이상으로 약해지면 기존망으로 핸드오버를 시도하니 크게 걱정하실 필요는 없으실듯 합니다.
하지만 잦은 핸드오버는 딜레이를 유발하고 배터리를 빨리 소모합니다.

Kicking spammers out of your Asterisk server

If you have your asterisk server connected to the public internet, there always will be some bad boys trying to brute-force into your PBX.

A few months before I found my asterisk server dead. Looking through the logs I was surprised to find that it was the spammers trying to brute force the password, eventually filling up the entire disk with error logs and crashing the server. Unfortunately that server operated on a single partition scheme with everything allocated for / .


[Sep 12 20:24:02] NOTICE[28190] chan_sip.c: Registration from '"249" ' failed for '37.8.53.84:10937' - No matching peer found
[Sep 12 20:24:02] NOTICE[28190] chan_sip.c: Registration from '"249" ' failed for '37.8.53.84:10937' - No matching peer found
[Sep 12 20:24:21] NOTICE[28190] chan_sip.c: Registration from '"497" ' failed for '37.8.53.84:5060' - No matching peer found
[Sep 12 20:24:21] NOTICE[28190] chan_sip.c: Registration from '"497" ' failed for '37.8.53.84:5060' - No matching peer found

Yesterday same thing happened again, but luckily I found it early enough to block it before it crashes the server.


iptables -I INPUT -s 37.8.53.84 -j DROP

I used iptables to filter out those garbage packets.
To view the blocked ip list use the following command.


iptables -n -L

It can be rather annoying when it comes to a production server where there are so many logs to inspect.
I recommend creating a script to automate the tasks if that is the case.

Setting arbitary destination IP for RTP packets (NAT mangling)

Gosh, those VoIP specs need to be more friendly to NAT!

In short, as RFC standards does not state anything about NAT, the server assumes that the IP included with SDP packets is the true WAN IP of the client, which is not the case in NAT scenarios and leads to problems.
This is a temporary workaround for getting voice packets go through NAT in OpenBSC. It would fix the one way audio that many people are experiencing.
I might try branching out from the main code for proper NAT support. IMO it is pretty riciculous to assume that picocells are connected to the internet directly, haha.

NAT mangling does not work with translated ports, so you need to turn off port translation in some routers.

Edit the following code

abis_rsl.c :

static void ipac_parse_rtp(struct gsm_lchan *lchan, struct tlv_parsed *tv)
{
	struct in_addr ip;
	uint16_t port, conn_id;

	if (TLVP_PRESENT(tv, RSL_IE_IPAC_LOCAL_IP)) {
		ip.s_addr = tlvp_val32_unal(tv, RSL_IE_IPAC_LOCAL_IP);
		DEBUGPC(DRSL, "LOCAL_IP=%s ", inet_ntoa(ip));
		lchan->abis_ip.bound_ip = ntohl(ip.s_addr);
	}

Add a section to replace the IP with proper one.

	if (TLVP_PRESENT(tv, RSL_IE_IPAC_LOCAL_IP)) {
		ip.s_addr = *((uint32_t *) TLVP_VAL(tv, RSL_IE_IPAC_LOCAL_IP));

		if (strcmp(inet_ntoa(ip), "/*internal IP*/") == 0)
		{
			DEBUGP(DRSL, "Overwriting internal IP to a real one\n");
			inet_aton("/*external IP*/", &ip);
		}

		DEBUGPC(DRSL, "LOCAL_IP=%s ", inet_ntoa(ip));
		lchan->abis_ip.bound_ip = ntohl(ip.s_addr);
	}

You should replace the internal IP with the internal IP of the nanoBTS. And external IP with the router’s IP as seen from the BSC

SGSN temporary MCC/MNC authentication hack

From gprs_gmm.c


                        char mccmnc[16];
                        snprintf(mccmnc, sizeof(mccmnc), "%03d%02d", ra_id.mcc, ra_id.mnc);
                        if (strncmp(mccmnc, mi_string, 5) &&
                            (sgsn->cfg.acl_enabled &&
                             !sgsn_acl_lookup(mi_string))) {
                                LOGP(DMM, LOGL_INFO, "Rejecting ATTACH REQUESET IMSI=%s\n",
                                     mi_string);
                                return gsm48_tx_gmm_att_rej_oldmsg(msg,
                                                                GMM_CAUSE_GPRS_NOTALLOWED);
                        }

It needs to be commented out to allow roaming IMSIs to receive PDP contexts

Using an ICC profile on linux

I had to find a way to use monitor ICC profiles on my linux box.

After a bit of researching I found that there is a nice application called ‘dispwin’ which is included in argyll package

sudo apt-get install argyll

dispwin /path/to/the/profile.icc

Easy.
In the same way you can write a bash script if you want to execute it on startup. I added the command to the end of /etc/mdm/Init/Default for Linux Mint 17

UPDATE: for Ubuntu MATE I added the command to /usr/lib/lightdm/lightdm-greeter-session