hi,
on the easterhegg 2009 we got everything running. even audio worked! and we catched our first imsi from a public network.
the following things must be changed in the software: - sending time slot 1 frames requires a queue and a timer, rather than using "usleep()". sleeping causes loss of audio and signalling informations. (i work on that) - subslots are in reverse order: slot 2 (0..3) must have mask 00110000 and not 00001100. this causes no audio. - both time slots (2 and 3) must be configured, or unitialized pointers cause a crash. - data link is available since DL_ESTABLISH_IND is received and not MPH_*. - in order to release layer 2 and unload the driver after stopping of bsc_hack, a special ioctl must be given after opening socket. - some little extras: changing card number and "location area code" by additional arguments.
@harald | @dieter: other isdn drivers (windows) have obviously reversed bit order on transparent channel. bit 0 is exchanged with bit 7 and so on. to make it work, i did not change the bit order, i just changed the location of the subslot, and it worked.
i would like to provide a patch for the solutions above. i will see, if i can do that this weekend.
furthermore i like to improve the libbsc:
- provide a real state machine to the layer 3 with timers. make calls setup and release cleanly. - support transcoding of all information elements. - remove all call/subscriber handling from layer 3 and put it into a seperat file (layer 4 call control). it will then be possible to initialize libbsc without the built-in call control and database, to use it for other applications like asterisk and linux-call-router. - add application interface to traffic channels for transcoding and switching. - add support for libbsc to linux-call-router.
the estimated time for this will be about 2-3 months. the result will be a complete BSC+MSC with routing and PBX features and asterisk interface. i will provide a patch en-block, because i work on all parts at the same time.
greetinx,
andreas