Hi!
Quite some time ago (must be 2-3 months ago), I have officially inquired
at ip.access about the source code of their wireshark modifications, as per
the GNU GPL.
It took them some time, but they eventually responded recently. Today I
finally received a CD-ROM with the source code.
I've uploaded it to the OpenBSC wiki, and it is now available from
http://openbsc.gnumonks.org/trac/attachment/wiki/nanoBTS/wireshark-1.0.6ipa…
Had I known earlier that ip.access has actually written a GPL licensed
dissector, many hours (rather days/weeks) of reverse engineering time would
have been saved.
I have not yet had time to review it thoroughly, though I plan to merge/port
the interesting bits of it with my dissectors for A-bis OML and ip.access RSL
extensions and eventually submit it to wireshark mainline.
If you use this source code, please don't just simply take it and push it
to upstream wireshark, as that would conflict with the patches that we have
in openbsc git at the moment.
Have fun with it,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hi!
Does anyone on this list have experience with nanoBTS Multi-TRX configurations?
I've built a TIB cable (10pin RJ69 to 10pin, 1:1 wiring, i.e. pin1 is pin1 on
the other plug, pin2 is pin 2, etc.) and connected the two BTS. When I power
them up simultaneously, they still come up as two individual BTS with each
their own unit ID. I've tried to set the unit ID to something like 1801/0/0 on the first one, and 1801/1/0 on the second. However, any non-zero TRX ID of the unit
ID is rejected by the BTS.
Any hint how I can make them behave like one BTS with two TRX is appreciated.
I'm expecting only one OML Link but of course two RSL links (one for each TRX).
Thanks in advance,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
hi,
i am no shure if i already sent this mail, but i can't find it anywhere.
this fixes the delay of audio caused by stalling of the openbsc process.
the use of 'usleep(100000)' for slowing down transmission to nanoBTS is
replaced by the tx-delay timer. i did this on bs11 code, so i did it the
same way. it actually queues frames for transmission not nanoBTS. on
transmission a timer is started and when this timer expires, the next
frame in the queue is transmitted (timer restarted) until the queue is
empty.
regards
andreas
Hello everyone,
I just want to ask, if there is a general interest in operating a
licensed
GSM-Network at the chaos congress. Is there anything planned for 26c3
(openBSC desk etc.)?
Maybe there is a good chance to get a temp. license for the 900 GSM
band from BNetzA.
I had little time in the past year to work on openBSC, but in the
coming months there will be more
time for fun ;)
Best regards
Bjoern
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Björn Heller
Jabber: tec(a)jabber.hellercom.de
Hi everyone,
Thanks to some hints from Sylvain my nanoBTS 140 is working now.
We found the following problems:
* Software Activation request is not complete ( it needs to contain tag +
FILE_ID and FILE_VERSION). See patch sent by Sylvain.
* It's relevant which Software is activated, but our logic to always use the
first SW Description record works most of the time because the nanoBTS will
move the software that was activated the last time to the first position.
So maybe we need hard-code which software to prefer for activation or we put
some warnings in the wiki.
What's left is that after some time the BTRS reports an error and goes to
Disabled state, but I have to investigate that more.
Philipp
hi,
here is the patch to support audio exchange between application
interface and nanoBTS.
the patch changes the audio format from TRAU frame format to RTP payload
format on the application interface. also the BS11 TRAU frame is
converted to/from RTP payload format (inside trau_mux.c), so an
application does not have to care about what BTS is used.
here is the format as defined by RFC: (just fyi)
first byte has the magic value of 0xd0 plus four upper bits of the
LARc[0] element as lower bits.
second byte has the lower two bits of the LARc[0] element as upper bits
and the upper bits of LARc[1] element as lower bits.
third byte has the lower four bits of LARc[1] element as upper bits and
so on...
this format can directly be transcoded with the open source lossy gsm
codec.
the rtp_proxy.c now parses RTP frames and generates them. for easier
code, i just mirrored the received RTCP frames back to the nanoBTS,
mangled of yourse. (oops, maybe i need to change some synchronization
source identifiers.) i think there is no problem with that right now.
because RFC requires special synchronization source (ssrc) generation, i
added md5 code and the (funny) random number generator. (see rtp_proxy.c
random32())
as soon as the patch is applied, i will also check in linux-call-router
modification for the new audio frame format.
note that this code is just quickly tested, it works with both BS11 and
nanoBTS and should not crash on corrupt or extended RTP data.
the delay of audio data sent to nanoBTS was > 0.5 seconds. i think this
is too much. maybe it is because i seamlessly increment the timestamp
value in the RTP frame, even if the application dropps (delays) frames.
regards,
andreas
On Sunday 04 October 2009 13:51:29 Harald Welte wrote:
> one further note on the missing md5 file:
>
> As it seems it is only used to generate a pseudo-random 32bit value
> for use in the SSRC: I'd rather not introduce a copy of MD5 for that.
>
> There are two options to take:
>
> 1) simply use the same [not very random] method as we use for the TMSI
>
> 2) introduce a dependency to openssl and use that. Given that nanoBTS
> also support OML/RSL over SSL/TLS, I think sooner or later we will
> have to add that dependency anyway.
hi,
i think that very good random is not required. in our case we don't have
large scale RTP conferences with thousands of sources. we have to choose
a random number that just differs from the one selected by nanoBTS. (the
RTP session will fail afer some seconds when using same SSRC.)
andreas
From: Sylvain Munaut <tnt(a)246tNt.com>
The previous code only sent the FILE_ID tag data part,
but according to the GSM 12.21 spec, section 8.3.6, the
full SW Description 'object' must be sent so that includes
the NM_ATT_SW_DESCR tag, the whole FILE_ID and the whole
FILE_VERSION (including tags & length fields).
Note that functionnaly on a nanoBTS 139 I couldn't see any
difference ... whatever I send in there it works ...
Signed-off-by: Sylvain Munaut <tnt(a)246tNt.com>
---
openbsc/src/abis_nm.c | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 35ed8db..a450452 100755
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -857,6 +857,7 @@ static int abis_nm_rx_sw_act_req(struct msgb *mb)
const u_int8_t *sw_config;
int sw_config_len;
int file_id_len;
+ int file_ver_len;
int nack = 0;
int ret;
@@ -889,18 +890,24 @@ static int abis_nm_rx_sw_act_req(struct msgb *mb)
if (sw_config[0] != NM_ATT_SW_DESCR)
DEBUGP(DNM, "SW_DESCR attribute identifier not found!\n");
+
if (sw_config[1] != NM_ATT_FILE_ID)
DEBUGP(DNM, "FILE_ID attribute identifier not found!\n");
file_id_len = sw_config[2] * 256 + sw_config[3];
+ if (sw_config[4+file_id_len] != NM_ATT_FILE_VERSION)
+ DEBUGP(DNM, "FILE_VERSION attribute identifier not found!\n");
+ file_ver_len = sw_config[5+file_id_len] * 256 + sw_config[6+file_id_len];
+
/* Assumes first SW file in list is the one to be activated */
- /* sw_config + 4 to skip over 2 attribute ID bytes and 16-bit length field */
+ /* The +7 in length is to account for the 3 tags and 2 length fields */
+ /* (see GSM 12.21 - 9.4.{62,18,19} for details */
return ipacc_sw_activate(mb->trx->bts, foh->obj_class,
foh->obj_inst.bts_nr,
foh->obj_inst.trx_nr,
foh->obj_inst.ts_nr,
- sw_config + 4,
- file_id_len);
+ sw_config,
+ 7 + file_id_len + file_ver_len);
}
/* Receive a CHANGE_ADM_STATE_ACK, parse the TLV and update local state */
--
1.6.4
> One thing I noted immediately: The newly-introduced md5c.c file is
missing from your diff. Can you please re-submit with that file?
Thanks.
>(in case you work with git, first 'git add' the file, then 'git diff
HEAD', if all your changes are not yet committed)
ok, again a corrected verion of the rtp.patch (hopefully complete)