Tag Archives: nanoBTS

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

nanoBTS reset procedure

This tutorial is for those who need to reset their nanoBTS units for redeployment.

Originally each nanoBTS unit comes with a little reset dongle. But the dongle isn’t very special – it is just a proprietary connector with pins 9-10 connected to each other.

A screwdriver can do the exactly same thing, all you need to do is to short out pins 9 and 10 of the TIB-IN connector.
The TIB connectors of nanoBTS are a modified RJ69 connector. Refer to the following image for pin locations:

10-pin-mod-jack

You need to short out the rightmost two pins of the plug.

 

Video tutorial for 165 series

Video tutorial for 110 series

 

Disclaimer : This tutorial is not sponsored nor endorsed by ip.access and I am not in anyway associated with ip.access. Please do not contact me for sales inquiry.

 

ip.access nanoBTS pictures

These are the picocells from ip.access ltd.
They only sell the individual units to authorized clients, so getting one out for sale can be quite difficult. But from time to time there are some deals.
The price of a nanoBTS cannot be revealed due to an NDA(Non-Disclosure Agreement).

DSC_0484

A 165 model (supports EDGE). Front.

DSC_0485

165 model without lid

DSC_0487

Ports, there is a separate port for 48v power.

DSC_0488

Back. With wall-mount brackets

DSC_0489

A 110 model.

DSC_0490

110 model without lid.

DSC_0491

110 model ports.