惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位
罗磊的独立博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
大猫的无限游戏
大猫的无限游戏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园_首页
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
IT之家
IT之家
博客园 - 聂微东
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
S
Security Affairs
宝玉的分享
宝玉的分享
V
V2EX
C
Cisco Blogs
博客园 - Franky
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
S
Securelist
J
Java Code Geeks
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
WordPress大学
WordPress大学
W
WeLiveSecurity
T
Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志

Blog on KittenLabs

Marantz UD5007 power supply replacement GPD Pocket 4 Speaker DSP Extreme Pi Boot Optimization WiFi auth with OsmoHLR/SIM cards Windows 11 tweaks & usability improvements Using custom domains as a Fediverse redirect 25GBit/s on macOS & iOS Manage RDP certificates on Windows using SSH Reviving a dead Gigabyte MJ11-EC1 mainboard Dead TROTEC PAC2000S air conditioner PlutoSDR standalone ADS-B FR24 feeder Micro8088 build log OpenWRT als WireGuard-Appliance GPS locked Raspberry Pi Es'hail-2 transceiver setup ThinkPad PowerSeries 820 WiFi over satellite TV coax
PlutoSDR clock input
By Manawyrm (@manawyrm@chaos.social) | Saturday, January 05, 201 · 2019-01-05 · via Blog on KittenLabs

Warning! This modification voids the warranty and can operate the transceiver outside of it’s absolute maximum ratings!

PlutoSDR with 3rd SMA jack for clock input

The PlutoSDR has an internal XO (Rakon RXO3225M 40.000 MHz), which has excellent qualities like very low jitter.
Unfortunatly for ham radio use, the absolute accuracy (PPM) and stability isn’t great.
When generating signals in the GHz-range (like a TX-signal for QO-100 at 2.4 GHz) the error can multiply up to several kHz, much more than the signal bandwidth itself.

Oscillator mod

PlutoSDR with 3rd SMA jack PlutoSDR PCB, most parts masked off with Kapton tape, except for the crystal oscillator PlutoSDR PCB with crystal oscillator (Y3) removed PlutoSDR PCB with wire from 3rd/middle SMA jack to upper-left pin of the Y3 footprint

To fix this issue, I modified my PlutoSDR to accept an external 40 MHz reference clock signal.
This signal is provided by a LeoBodnar Mini GPS Reference Clock, which has an adjustable output frequency and is pretty much perfect for this application.

The AD9363 transceiver chip only requires a very low signal input. Ideally you would install 2 fast antiparallel diodes to clamp the voltage to a maximum of about 0.7V. My modification is a bit rough and may damage the chip in the long run, but it works fine for now.

PlutoSDRs are factory calibrated to their own XOs.
When using an external reference clock you’ll need to set xo_correction = 40000000 in the config.txt.

Frequency counter, measuring 2350.0001 MHz PlutoSDR with LeoBodnar GPS referenced clock on top, connected via SMA cable

Alternative reference frequencies

The PlutoSDR can accept a wide range of input reference frequencies between 10 MHz and 80 MHz. This can be useful if you want to use a regular 10 MHz lab reference or want to share the same GPSDO between a PlutoSDR and a satellite LNB (which commonly use ~27 MHz).

After logging into the PlutoSDR either via SSH (192.168.2.1 root/analog) or serial console, the following commands can be used to set the reference clock:

fw_setenv adi_loadvals 'fdt addr ${fit_load_address} && fdt get value fdt_choosen /configurations/${fit_config}/ fdt && fdt get addr fdtaddr /images/${fdt_choosen} data && fdt addr ${fdtaddr}; if test ! -n ${ad936x_skip_ext_refclk}; then if test -n ${ad936x_custom_refclk}; then fdt set /clocks/clock@0 clock-frequency ${ad936x_custom_refclk}; elif test -n ${ad936x_ext_refclk}; then fdt set /clocks/clock@0 clock-frequency ${ad936x_ext_refclk}; fi; fi; if test -n ${model}; then fdt set / model ${model}; fi; if test -n ${attr_name} && test -n ${attr_val}; then fdt set /amba/spi@e0006000/ad9361-phy@0 ${attr_name} ${attr_val}; fi'
fw_setenv ad936x_custom_refclk "<25000000>"

These (rather unwieldy) commands will change the behaviour of the bootloader at startup. Normally the u-boot looks for a special variable called ad936x_ext_refclk which is set in the factory and contains an individually calibrated value for each PlutoSDR. This value then gets loaded into the device tree. We modify that behaviour so that we can set our own ad936x_custom_refclk variable with a custom value.
Note: The < >-characters around the frequency are mandatory.

To check if our changes were successful, we can read the device-tree:

cat /proc/device-tree/clocks/clock@0/clock-frequency | xxd
# 00000000: 017d 7840                                .}x@

Hex 017d 7840 is 25000000 in decimal, so our custom frequency was successfully applied.