seemoo-lab / mobisys2018_nexmon_software_defined_radio

Proof of concept project for operating Broadcom Wi-Fi chips as arbitrary signal transmitters similar to software-defined radios (SDRs)
Other
760 stars 69 forks source link

Can the frames generated by the bash script be received on the 20MHz channel 1? #13

Open chrissy-risk opened 3 years ago

chrissy-risk commented 3 years ago

At present, I have installed and successfully transmitted the data frame on the Raspberry Pi 4B. Then I want to extract the CSI of this information through the CSI extraction function of nexmon_csi. Is the extraction performed on 20MHz channel 1 when using this scheme?

jlinktu commented 3 years ago

By default 20MHz channel 1 is correct. You can change the transmit channel specification here: https://github.com/seemoo-lab/mobisys2018_nexmon_software_defined_radio/blob/70733afcfd1a379d75d1423840716d8ef9cb8ab6/payload_generation/generate_frame.m#L125 Just make sure to extract CSI on the same channel you are transmitting on.

DennisHerell commented 3 years ago

@chrissy-risk Hi, may I know how did you successfully installed this? When I tried to run it I come into the same issue as in issue #8. I realized it only support the older 7_45_154, which is the problem. So I installed the general nexmon patch for 7_45_154 first and then install this (But I suppose this is useless as when I run make install-rpi3plus it overwrite it?) I am trying to install this on RPI3B+, any assistance is really appreciated!

chivas1000 commented 3 years ago

At present, I have installed and successfully transmitted the data frame on the Raspberry Pi 4B. Then I want to extract the CSI of this information through the CSI extraction function of nexmon_csi. Is the extraction performed on 20MHz channel 1 when using this scheme?

@chrissy-risk Hi there, I also want to install this SDR feature on my RPi 4B, first I thought when I was running the Nexmon_csi program (https://github.com/seemoo-lab/nexmon_csi). I've already installed the firmware, so I've skipped 1 - 11 steps and directly do step 12. But it saids no definitions.mk and no rule to make this target. Is there any ways to run this on 4B? Really appreciated if you could give me some advice.

chrissy-risk commented 3 years ago

@jlinktu Hello, I have now written a program to continuously send bash scripts so that the Raspberry Pi can continuously send frames. However, when receiving the Raspberry Pi with the CSI extraction patch installed, the frame with the matching MAC address was not found in the captured packet. I set to transmit one frame per second. Is this launch time too long?

chrissy-risk commented 3 years ago

@chivas1000 I haven't encountered this problem. Have you tried to format the SD card and then follow the steps to install it again?

chrissy-risk commented 3 years ago

@DennisHerell I also encountered this problem before. Later, the reason should be that no .ko file was found. You can re-make, and then look for this file in the directory. You can find someone who understands linux to help you see the reason.

DennisHerell commented 3 years ago

@chrissy-risk Thanks, I manage to install it now. I install nexmon 7_45_154 and move the brcmfmac.ko, then install nexmon_sdr. At this point, it still show the same error, but after rebooting it finally work. I'm not sure what exactly make it work now though.

I actually have a similar problem with yours regarding extracting csi, however I transmit frame by creating raw socket instead. That's why I'm trying out this SDR function. I manage to send frame (albeit a bit unreliably) with this, however I couldn't check the csi for now as I only have 1 RPi 3B+ at the moment.

For your problem, did you check that pcap file did include the signal from the SDR? Don't use the dst port 5500 filter, and you can see every frame received so you can at least check that the signal is at least being received.

One more thing, did you get the signal to be sent out reliably? When I tried receiving the signal, the rate is very low. It got better when I put it into continuous mode by putting the endless parameter into 1, but it still not very reliable

chrissy-risk commented 3 years ago

@DennisHerell After I successfully installed the SDR function, I used the wireshark software to receive the sent frames. Do you mean that if I do not use the dst port 5500 filter, I can receive the CSI of the transmitted frame? I have set the script to be sent every 1ms. From the perspective of the transmitted signal, it is relatively stable. If you wish, we can communicate via email.

DennisHerell commented 3 years ago

@chrissy-risk No, I'm just saying that without the filter you can check whether the frame is actually being transmitted or not. This way at least you know whether the problem is in the transmitter or receiver. For example, this is the pcap file from my nexus 5 using nexmon SDR not using filter: Screenshot from 2021-03-15 22-58-51 As you know, the UDP frame with dst port 5500 contain the csi. Without filter, you can see the other frames too. You can see the exact frame being received (not just the CSI). I found that sometimes the received frames csi are not being extracted. I encounter that issue when I'm trying to transmit frame using RPi 3B+ through raw socket. In that case, the csi package won't be created even though you received the frame. I'm still not sure why this happen.

IceNotCold commented 11 months ago

use the dst port 5500 filter, I can receive the CSI of the transmitted frame? I have set the script to be sent every 1ms. From the perspective of the

Can you please share how to modify the code to enable cyclic transmission with a period of 1 millisecond? I need this function too.

moshangqingfeng commented 3 months ago

@DennisHerell After I successfully installed the SDR function, I used the wireshark software to receive the sent frames. Do you mean that if I do not use the dst port 5500 filter, I can receive the CSI of the transmitted frame? I have set the script to be sent every 1ms. From the perspective of the transmitted signal, it is relatively stable. If you wish, we can communicate via email.

@chrissy-risk Sorry, the frame transmitted is also very unstable, I often can't get a signal. How did you solve this problem? How did you set the send cycle to 1ms?