Implementation questions regarding Class B Device


I am currently trying to implement a Class B device, but I did not found any clear example which describes the whole procedure (ex: needed functions, logical order of calls, etc…)
I am using a STM32WL55JC1 board as EndNode, and a Dragino LPS8N (without SIM module) as gateway.

As I’ve been reading, the gateway needs to have a GPS to be able to send beacons, but since it will be placed indoor, there is a big chance that the GPS signal will be really poor. The LPS8N gateway have a fake_gps feature, which is enabled, and I was able to change on the local_conf.json file as following (I am using EU868):

“fake_gps”: true,
“ref_latitude”: (real gateway lat),
“ref_longitude”: (real gateway long),
“ref_altitude”: 420,
“beacon_period”: 128,
“beacon_freq_hz”: 869525000,
“beacon_datarate”: 9,
“beacon_bw_hz”: 125000,
“beacon_power”: 14,
“beacon_infodesc”: 0,
“time_interval”: 30,

but I still dont see any beacons been sent by the gateway. Are the beacons exclusively handled by the gateway, or does the Network-Server also has something to do with it? I tried already a paid-instance of TTN and own hosted ChirpStack, but I still cannot change the device to Class B.

Currently I use the LmHandlerRequestClass to change to Class B , which calls LmHandlerDeviceTimeReq. After that, it checks for the beacon acquisition (inside MlmeConfirm function), which always fails, and another time request is sent again.

The periodic-uplink-lpp example also did not helped me too much.

I would be very grateful if anyone can give me some direction or some examples of how to implement
a class B device or point me out my current errors.

Many thanks in advance!