wiki:nanoBTS/Getting_Started

Getting started with Openbsc and an ip.access nanoBTS

This page describes how ot configure + set up an ip.access nanoBTS to use it in conjunction with OpenBSC (i.e. [osmo-nitb] or [osmo-bsc]).

Please note once again that the Osmocom project has no affiliation and no contact with ip.access. All information here is presented based on our own experience only. If you have official documentation by the manufacturer, you should probably consult that instead of using this wiki page.

Physical set-up

Power supply

The nanoBTS uses PoE (Power-over-Ethernet). It does not have any other power connector, so you will have to use a PoE-Injector (aka mid-span) or a PoE capable switch (like the Netgear FS-108P for a small desktop switch).

Please note the power demand of the nanoBTS is quite high for a PoE powered device. You may not be able to use all the PoE ports of your switch for nanoBTSs. Check with your switch vendor and/or ip.access.

On first sight, there appear to be three RJ-45 jacks on the nanoBTS. However, two of them are actually RJ-69 (10-pin) and only used in stacking configurations (see nanoBTS/multiTRX for details). This leaves only 1 real RJ-45 marked LAN/48VDC, and that's where you connect your powered Ethernet.

Antennas

There are four SMA connectors, one on each corner.

  • RX (receive antenna for uplink)
  • TX (transmit antenna for downlink)
  • NWL (network listen, a special mode where the BTS behaves like a MS to receive other BTSs)
  • AUX (once again only used for stacking, see nanoBTS/multiTRX)

RX and TX should each be connected to an antenna, either the small factory-supplied antennas, or some larger antenna or even an RF distribution system or an external LNA + PA + Duplexer kit.

Do not power up the device without a TX antenna

Software configuration

The nanoBTS has a number of parameters that are stored in NVRAM. Those essential parameters are required for the nanoBTS to know how to use the network and to which BSC to connect. All other operational parameters are volatile and configured after booting from the BSC through A-bis/IP by means of the GSM TS 12.21 SET ATTRIBUTE messages.

Network configuration

The nanoBTS can either be configured to use a static IP address (IPv4 address, netmask, default gateway) or to use DHCP.

ip.access supplies some official tools for this purpose. OpenBSC contains the ipaccess-find and ipaccess-config utilities, which implement a sub-set of the features.

The remainder of this presentation assumes that the nanoBTS is configured for use with DHCP.

In any case, after the unit has been attached to the Ethernet, other systems attached to the same Ethernet link-layer segment (broadcast domain) can use the ipaccess-find tool to identify the BTS attached to the network. This looks like:

$ openbsc/src/ipaccess/ipaccess-find
ipaccess-find (C) 2009 by Harald Welte
This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY

you might need to specify the outgoing
 network interface, e.g. ``./ipaccess/ipaccess-find eth0''
Trying to find ip.access BTS by broadcast UDP...
MAC_Address='00:11:22:33:44:55'  IP_Address='192.168.100.193'  Unit_ID='102/0/0'  Location_1=''  Location_2='BTS_NBT131G'
Equipment_Version='165g029_79'  Software_Version='168a352_v142b30d0'  Unit_Name='nbts-00-11-22-33-44-55'  Serial_Number='01234567'

As you can see, it prints the MAC and IP address information, as well as the serial number of the unit.

Most importantly, it also contains the so-called Unit-ID, which is a unique identifier for this unit inside the BSC area. A Unit ID is structured into three components, separated by '/'.

Setting the Unit ID

You can use [ipaccess-config] to set the Unit ID of the device like this:

openbsc/src/ipaccess/ipaccess-config -u 1234/0/0 -r 192.168.100.193
ipaccess-config (C) 2009-2010 by Harald Welte and others
This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY

Trying to connect to ip.access BTS ...
<0005> abis_nm.c:398 OC=SITE-MANAGER(00) INST=(ff,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) 
<0005> abis_nm.c:398 OC=BTS(01) INST=(00,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
OML link established using TRX 0
setting Unit ID to '1234/0/0'
restarting BTS
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,00) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,01) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,02) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,03) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,04) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,05) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,06) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,07) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=RADIO-CARRIER(02) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-NSE(f0) INST=(00,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-CELL(f1) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-NSVC(f2) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-NSVC(f2) INST=(00,01,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff) IPACCESS(0xf0): SET NVATTR ACK
Set the NV Attributes.
The BTS has acked the restart. Exiting.

where 192.168.100.193 is the IP address of the BTS.

The BTS will re-start in order to use the new unit-id. You can again use [ipaccess-find] to verify the configuration. Please note that the BTS restart can easily take some minutes. Wait until the LED is no longer in 'permanent orange on' mode.

Setting the Primary OML address

The BTS needs to know the IP address of the BSC in order to be able to establish an Abis/IP link to it. This is what's called the primary OML address. You can set it like this:

$ ./ipaccess/ipaccess-config -o 192.168.100.11 192.168.100.193
ipaccess-config (C) 2009-2010 by Harald Welte and others
This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY

Trying to connect to ip.access BTS ...
<0005> abis_nm.c:398 OC=SITE-MANAGER(00) INST=(ff,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) 
<0005> abis_nm.c:398 OC=BTS(01) INST=(00,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
OML link established using TRX 0
setting primary OML link IP to '192.168.100.11'
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,00) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,01) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,02) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,03) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,04) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,05) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,06) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=CHANNEL(03) INST=(00,00,07) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=RADIO-CARRIER(02) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-NSE(f0) INST=(00,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-CELL(f1) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-NSVC(f2) INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=GPRS-NSVC(f2) INST=(00,01,ff) STATE CHG: OP_STATE=Disabled AVAIL=Not installed(07) ADM=Locked 
<0005> abis_nm.c:398 OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff) IPACCESS(0xf0): SET NVATTR ACK
Set the NV Attributes.

where 192.168.100.11 is the IP address of your BSC, and 192.168.100.193 is once again the IP address of the BTS itself.

From this point on, the BTS should try to make TCP connections to 192.168.100.11 TCP Port 3002. You can verify this in tcpdump or wireshark.

Once you start OpenBSC (osmo-nitb or osmo-bsc on the machine that owns the specified IP address (192.168.100.11 in the example above), the BTS should connect to OpenBSC and you should see something like this in the OpenBSC log file:

<000d> input/ipaccess.c:696 accept()ed new OML link from 192.168.100.193
Last modified 3 years ago Last modified on Jul 13, 2011, 6:00:25 PM