proper wpa_supplicant ctrl_interface socket communication documentation - wpa-supplicant

Is there a proper documentation for the communication with wpa_supplicants ctrl_interface socket?
I am looking for an explanation of all the Events (like CTRL-EVENT-BSS-ADDED, CTRL-EVENT-SCAN-RESULTS) and a specification of the format of responses to commands like SCAN_RESULT or STATUS.
https://w1.fi/cgit/hostap/plain/wpa_supplicant/README only lists the available commands and explains some events.

Related

ApiRTC - Media always sent to the cloud, even with meshOnlyEnabled

As a follow-up to my previous post (ApiRTC - Behaviour with meshModeEnabled and meshOnlyEnabled)
Hello,
You say that SFU is necessary for any activity that requires centralizing all the streams (recording, bandwidth optimization,...). However, in MESH mode, the files/media exchanged still manage to be recorded on the Apizee media server even though I don't go through the SFU. How is this possible ?
Can this behaviour be disabled so that the exchanged documents never leave the MESH stream ?
I have not found anything about this in the documentation.
By the way, the documentation often mentions the term "MCU", does this mean that ApiRTC also uses an MCU server in addition to the SFU ?
Thanks in advance.
apirtc
Can this behaviour be disabled so that the exchanged documents never
leave the MESH stream ?
Concerning a recording of all the streams in the conversation (via the startRecording method of the Conversation object see https://apirtc.github.io/references/apirtc-js/Conversation.html#startRecording__anchor):
--> The composition of multiple streams into one video file is done server-side by the SFU (v4.4.8).
Concerning the files (through conversation.pushData method):
--> We manage the file transfer through uploading the file on a storage and share the URI to all parties of a conversation. P2P transfer is not available (v4.4.8)
To exchange data in a P2P mode, you can use the Conversation.sendData method to send raw data across all participants.
Regarding your question about the MCU, no, ApiRTC doesnt use any MCU server to date (v. 4.4.8). The document refers to MCU for very specific on-premise deployment, not supported for ApiRTC users.
Cheers,
Romain

Log4View UDP Message Structure

I'm trying to send from various applications logs to Log4View by UDP (port 878), but i can't find any information of the message format on the web.
I've tried to send a simple string but it won't work at all.
Is there any information about it? I know that it is very simple task in C# with log4net, but the web is lack of information on other platforms.
To send log messages to Log4View via UDP, you have to use the xml format.
You can find more in our documentation about how to use the xml format:
http://www.log4view.com/fileadmin/user_upload/Log4ViewHelp/XML_Layout.html
Yours sincerely
Philipp Lauchner
PROSA GmbH
Development & Support

How looks WebRTC peer negotiation workflow?

I need to develop a custom WebRTC peer (I need to establish audio or/and data connection between web-browser and non-browser). I however, struggle to find a proper, clear description of the handshake phase.
Answers to questions such as How to create data channel in WebRTC peer connection? are not entirely helpful, as they are not too detailed. Specifically, they say nothing about SDP contents.
Can anyone explain this or recommend any good documentation?
Here is a page with some graphs showing how the signaling process works. Basically, you set some client side stuff first:
PeerConnectionFactory; to generate PeerConnections,
PeerConnection; one for every connection to another peer you want (usually 1),
MediaStream; to hook up the audio and video from your client device.
Then you generate an SDP offer
peerConnection.createOffer();
on the caller side and send it to the callee. The callee sets this offer
peerConnection.setRemoteDescription(insert-the-offer-here);
and generates an SDP answer
peerConnection.createAnswer();
and sends it back to the caller. The caller receives this answer and sets it.
peerConnection.setRemoteDescription(insert-the-answer-here);
Both the caller and callee get a call to
onAddStream() {...} //needs to be implemented in your code
The callee when the caller's offer is set and the caller when the callee's answer is set. This callback signals the beginning of the connection.
You can also use ICE (STUN/TURN) to avoid firewall and NAT issues, but this is optional. Although in production code, you probably want to implement it anyway.
Note: Webrtc documentation is scarce and subject to change, take everything you read about webrtc (at least anything written as of now) with a grain of salt...

ICE connectivity in a WebRTC call

In a Webrtc call, I am using sip signalling and sdp for media parameter negotiation.
Before call start, I do a stun-bind transaction and get reflexive candidates. I have put those reflexive candidates in sdp in addition to base and host candidates.
As soon as we get 200 OK for Invite, we need to start media. For media start, I need to know which candidate pair I need to use.
I hope to determine which candidate pair I need to use, we need to do connectivity check. I am not sure how to do connectivity check (like which message to send.. etc).
Can somebody help me in this to understand.
Also is there an open source (c, linux based), that gives ice/stun/turn support.
This information is given on RFC 5245. You need to read this RFC for implementing ICE. For your query about doing ICE connectivity check, read this section of the RFC.
Also is there an open source (c, linux based), that gives
ice/stun/turn support.
Search google for this and you will get your answer.

Sending data packets over udp

I am creating an app that acts as a remote control for a lighting console and I need to send commands to the console over UDP. The protocol that I am using has its own custom header. How do I create the data packet with header and message to send over UDP? Thanks!
If you are trying to test the protocol, without writing any code, I suggest you use WireShark.
The probably most powerful solution you can use is scapy, which is a python module that allows very advanced packet crafting and manipulation. See its documentation or search the interwebs for examples to find out how to generate arbitrary packets and transmit them.
If you can't use python for some reason, there are multiple command line tools for packet generation, one other example being nping (documentation), the brother of nmap, the popular network scanner. nping has options to generate UDP packets with arbitrary payloads, with can be specified as a hex string, for example.
There may be other options as well. It would be good to know more details like the operating system you're on or where you get your input data from, and in which format.