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