-
Notifications
You must be signed in to change notification settings - Fork 188
Low performance with SDIO (iperf) #588
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
What is effective clock in use?
Also, please check the raw transport throughput first in both directions using this |
Interface test give about 53Mbps.
Signal is -8 dBm |
I couldn't see any obvious issue in sdkconfig. you would need to test 'raw' throughput test (tx and rx both half duplex) to understand if something wrong in the sdio first. |
|
insmod esp32_sdio.ko raw_tp_mode=2 give
But insmod esp32_sdio.ko raw_tp_mode=1 hangs and don't working. |
From logs it looks to be C6 SDIO. Pull-up are specific values and should be applied on specific lines : check https://docs.espressif.com/projects/esp-idf/en/latest/esp32c6/api-reference/peripherals/sd_pullup_requirements.html for details. We use 51K ohm external pulls for CMD and DATA (DAT0 - DAT3). Please ensure the trace length is the same. Generally, this kind of issues would be faced for poor grounding and high signal interference experienced on SDIO. The jumpers put the cherry on the cake (in a sarcastic way). We do not recommend using jumpers manually for SDIO, instead you get SDIO as with jumper cables, it is not stable. Apart from this, please also check the voltage received on SD lines. It should be 3v3. If you just wish to evaluate, you can also try using SPI with jumper cables or SDIO 1-bit mode, instead of 4-bit mode. |
First, I decided to verify the hardware. To do this, I took this example from the IDF and uploaded it to my board. I connected to a Wi-Fi router and ran iperf as a server, and got a stable 30.8 Mbit/sec. Therefore, I assumed that there was no problem with the crystal or power supply of my PCB design. Next, I dropped the SDIO frequency to 20 MHz and captured the SDIO communication with my 100 MHz logic analyzer.
Then, I loaded the kernel module with raw_tp_mode=2 and got 36,950 kbps. The log of the communication (Kingston Vis logic analyzer).
KingstVis logs google disk ( 300+MB)
|
Checklist
How often does this bug occurs?
always
Expected behavior
Expect to get at last 15Mbits in iperf3 test
Actual behavior (suspected bug)
For TCP connection I get 5.55 Mbits/sec
For UDP connection I get 1.05 Mbits/sec
Error logs or terminal output
Steps to reproduce the behavior
Project release version
master
System architecture
ARM 32-bit (Raspberry Pi 32-bit)
Operating system
Linux
Operating system version
Buildroot
Shell
Bash
Additional context
Platform - RockChip RV1106
SDIO section in DTS file
The text was updated successfully, but these errors were encountered: