For subscribing the mqtt-sn client, I tried with EMQx dashboard. I also tried with MQTT.fx (Windows application: Softblade) through MQTT.
For publishing, I tried with a php script that connects to MQTT and perform a publish and also through another client with MQTT.fx.
My final MQTT-SN client is a Sim7080G (NB-IoT module) that uses Vodafone network. It can connect, register a topic, publish and disconnect. in every case the module receives the corresponding ACK.
I updated EMQx to 5.4.1 version. I have the free option.
All publications are done in QoS1.
Can you tell me how you tested the mqtt-sn client? did you use a python script or something I can try? Is it possible you share your gateway configuration? Maybe I have something bad configured or I need to setup other parameters.
I just tried creating the subscription through the end device (NB-IoT module) and this is the log file from the server:
2024-01-18T07:53:46.439124+01:00 [debug] msg: RECV_data, mfa: emqx_gateway_conn:parse_incoming/2(693), peername: 31.221.152.191:12837, data: <<21,4,0,1,234,96,56,54,48,48,49,54,48,52,51,57,55,55,50,54,56>>
2024-01-18T07:53:46.440438+01:00 [debug] msg: RECV_packet, mfa: emqx_gateway_conn:handle_incoming/2(750), peername: 31.221.152.191:12837, packet: SN_CONNECT(W0, C0, ProtocolId=1, Duration=60000, ClientId=client_id)
2024-01-18T07:53:46.445864+01:00 [debug] msg: subscribe, mfa: emqx_trace:subscribe/3(79), peername: 31.221.152.191:12837, clientid: client_id, topic: mqttsn/topic_sub, sub_id: <<"topic_sub">>, sub_opts: #{is_new => true,nl => 0,qos => 1,rap => 0,rh => 1}, tag: SUBSCRIBE
2024-01-18T07:53:46.447001+01:00 [debug] msg: unsubscribe, mfa: emqx_trace:unsubscribe/2(84), peername: 31.221.152.191:12743, clientid: client_id, topic: mqttsn/topic_sub, sub_opts: #{is_new => true,nl => 0,qos => 1,rap => 0,rh => 1,subid => <<"topic_sub">>}, tag: UNSUBSCRIBE
2024-01-18T07:53:46.447892+01:00 [debug] msg: conn_process_terminated, mfa: emqx_gateway_conn:terminate/2(588), peername: 31.221.152.191:12743, clientid: client_id, reason: {shutdown,takenover}
There is an unsubscribe message my device is not sending. Is this produced by the server?