Hello All,
first I want to thank ricardes being so active here from official side.
Then further a big thanks to sergey, as his posts (esp. in the other related thread [Limesdr xtrx not found - #38 by ricardas])
helped me understand my Problem at hand with getting the XTRX running on the RPi5 + Pineboard’s miniPCIe Hat.
Being busy with this for weeks now, I indeed have XTRXs here which all have the R114 not fitted,
and have great hopes on getting it finally running.
Before I warm up my soldering iron and skills I however would like to ask for some clarifications,
as the issues (this and other thread) are a bit convoluted in my perception by now.
Could you please comment on my understanding of the current steps to perform to get the XTRX running on an RPi5.
A/ Hardware:
1/ Solder 0R for in place for missing R114 (for v 1.2, for v 1.1 it is R112). I.e. short the R114 0201 pins.
- That is necessary to communicate “when the host power and clocks have stabilized, and resetting the device”
- Does this apply for all Hosts, not only the RPi5, or at least those hosts which follow a similar PCIe power/clock protocol?
- I.e., there wont be any consequences if I short those pins now, and use it in the future hopefully with your eval board.
Please also note that R114 is still marked NF in the v 1.2 Schematic export and in the corresponding BOM.
B/ Software / LimeSuiteNG:
1/ Installation Guide & git branch
Your git head points to the develop branch. One will automatically clone the develop branch and nowadays find LimePCI instead of LitePCI.
This is not inline with the official documentations, and has been mentioned by ricardes already, however, from which branch do you want me to pull: develop or stable?
2/ LitePCIe vs. LimePCIe
Related to the above (A.1), I assume the correct way would be to build from source using your latest DMA powered implementation from the develop branch,
thus building LimePCIe kernel module, which will run on the RPi5.
LimePCIe implements DMA and the driver automatically utilizes DKMS if installed.
If DKMS is not installed (or not enabled explicitly during building LimeSuiteNG using cmake option “USE_DKMS=off”), DKMS wont be used in the driver.
Can you confirm the driver will run on the RPi5 without DKMS, as sergey had success by using DKMS.
I ask because the “loading out-of-tree module taints kernel” litepci dmesg I used to get.
2.1/ Kernel Headers
If one builds for/on the RPi5 dont use the “install_dependencies.sh” script, but install all dependencies yourself,
and make sure you get the right kernel headers:
sudo apt-get install "linux-headers-$(uname -r)"
Can you confirm this is needed for both LimePCIe and/or LitePCIe solutions?
Can you confirm cmake/make are configured to include those headers during build and not use potential generic ones available concurrently?
With all these steps, one should be able to see the device with limeDevice or lspci in an deterministic manner.
3/ Memory Mapping
There is a 32 vs 64 bit memory mapping issue of the XTRX Shipped Firmware in communications with the RPi5.
Thus, once one is able to see the XTRX (see above),
the new gateware (allowing to address the 16KB of the RPi5 using 64 bit) from ricardes (thanks!) available as binary here,
must be flashed on the XTRX using
limeFLASH combined_flash_programming.bin
(Note the remarks from ricardes on this [Limesdr xtrx not found - #38 by ricardas]).
Otherwise TX/RX errors will occur during use of the XTRX due to wrong DMA addressing.
This update also makes the workaround of putting “dtoverlay=pcie-32bit-dma” (ricardes) or “dtoverlay=pciex1-compat-pi5,no-mip” (sergey) obsolete, correct?
Excuses for the long message but I needed to confirm this before losing more time with getting this to work.
Thanks in advance for your time looking into my clarifications and your help.
Once you come back to me, I will setup a clean OS and RPi5+Pineboard-miniPCIe-HAT+XTRX, and implement the steps.
Upon Success, I am volunteering to share a manual and lessons learned here.
Cheers