<?xml version="1.0"?>
<rss version="2.0"><channel><title>Radxa Rock S0 Latest Topics</title><link>https://testforum.armbian.com/forum/249-radxa-rock-s0/</link><description>Radxa Rock S0 Latest Topics</description><language>en</language><item><title>Fix for failing to boot from emmc</title><link>https://testforum.armbian.com/topic/59830-fix-for-failing-to-boot-from-emmc/</link><description><![CDATA[<p>
	Due to the shortage of memory chips these days, Radxa is using different <abbr title="embedded MultiMediaCard"><abbr title="embedded MultiMediaCard">emmc</abbr></abbr> models in their boards. For example, I recently ordered a big batch of Rock S0 boards, but they had to be delivered with Sandisk iNAND 32GB <abbr title="embedded MultiMediaCard"><abbr title="embedded MultiMediaCard">emmc</abbr></abbr> drives instead of the typical 8GB option.<br />
	<br />
	The problem is that Armbian did not reliably boot on these new boards. It randomly gets stuck during initialization with the onboard LED endlessly blinking. Some boards works, some did not, some only works sometimes.
</p>

<p>
	 
</p>

<p>
	Long story short, in case other people also have this problem: I found the solution. I believe it is caused by Armbian's Rock S0 device tree enabling the HS200 high speed mode for the <abbr title="embedded MultiMediaCard"><abbr title="embedded MultiMediaCard">emmc</abbr></abbr> device.  <a href="https://github.com/armbian/build/blob/574b46a0c1db3d8d0d5706f8366dc9cb60bc298a/patch/kernel/archive/rockchip64-6.12/board-rocks0-0001-deviceTree.patch#L237" rel="external nofollow">(source)</a><br />
	I guess not all <abbr title="embedded MultiMediaCard"><abbr title="embedded MultiMediaCard">emmc</abbr></abbr> chips reliably support this. To fix it, I had to remove the line in the device tree linked in the source above. Actually this should probably be done with a proper device tree modification, but in my case, just to test, I modified the boot scripts. In /boot/boot.cmd, add these lines near the bottom, but ABOVE the "booti ..." line:<br />
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">fdt rm /mmc@ff490000 mmc-hs200-1_8v
fdt set /mmc@ff490000 max-frequency &lt;0x02faf080&gt;</span></pre>

<p>
	<br />
	Then recompile in terminal with:<br />
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr</span></pre>

<p>
	 
</p>

<p>
	If you update the kernel/armbian distro these script will probably get overwritten, hence why it should preferably done with a custom device tree instead. But in my case I have frozen updates, and either way this will serve as a starting point for others having the same issue.<br />
	<br />
	Actually, I cannot see this troublesome patch on the 6.18 distro source, so maybe this is old news and no longer a problem on modern images anyway. But my image is still on 6.12, so I figured I'd share anyway. 
</p>
]]></description><guid isPermaLink="false">59830</guid><pubDate>Thu, 21 May 2026 20:39:58 +0000</pubDate></item><item><title>SPI on rock s0</title><link>https://testforum.armbian.com/topic/43400-spi-on-rock-s0/</link><description><![CDATA[<p>
	Hi guys, I got a SPIdev overlay to work on the rock S0, figured I'd just share it here for the record, since I could have used this info myself (I spent days trying to figure it out since I had no experience with device trees or whatnot).
</p>

<p>
	 
</p>

<p>
	Basically, download the attached .<abbr title="Device tree source"><abbr title="Device tree source">dts</abbr></abbr> file, then run
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">sudo armbian-add-overlay rk3308-spi2-spidev.dts</span></pre>

<p>
	I also edited /boot/armbianEnv.txt and added this line, but I'm unsure if that's actually necessary?
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">param_spidev_spi_bus=2</span></pre>

<p>
	 
</p>

<p>
	This worked on Armbian 24.5.1 Noble, creating /dev/spidev2.0. You can verify that it works using this tool: <a href="https://github.com/rm-hull/spidev-test" rel="external nofollow">https://github.com/rm-hull/spidev-test</a>
</p>

<p>
	The <abbr title="Device tree source"><abbr title="Device tree source">dts</abbr></abbr> file is based on this one from radxa, however changed to "fragment@" syntax like other armbian overlays: <a href="https://github.com/radxa-pkg/radxa-overlays/blob/main/arch/arm64/boot/dts/rockchip/overlays/rk3308-spi2-spidev.dts" rel="external nofollow">https://github.com/radxa-pkg/radxa-overlays/blob/main/arch/arm64/boot/<abbr title="Device tree source"><abbr title="Device tree source">dts</abbr></abbr>/rockchip/overlays/rk3308-spi2-spidev.<abbr title="Device tree source"><abbr title="Device tree source">dts</abbr></abbr></a>
</p>

<p>
	<abbr>Maybe this will also work on Rock Pi S, but haven't tested.</abbr>
</p>

<p>
	 
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://testforum.armbian.com/applications/core/interface/file/attachment.php?id=12814&amp;key=897a451e52caf8f8d21c26822195e75d" data-fileExt='dts' data-fileid='12814' data-filekey='897a451e52caf8f8d21c26822195e75d'>rk3308-spi2-spidev.dts</a></p>]]></description><guid isPermaLink="false">43400</guid><pubDate>Sat, 03 Aug 2024 07:45:50 +0000</pubDate></item><item><title>How to enter maskrom boot for emmc flashing, from software instead of using button?</title><link>https://testforum.armbian.com/topic/54824-how-to-enter-maskrom-boot-for-emmc-flashing-from-software-instead-of-using-button/</link><description><![CDATA[<p>
	Hi. I have Rock Pi S0 boards that I install in an enclosure.<br />
	It works, but it is conceivable that some critical bug or change with the image is discovered in the future so that customers later need to flash a new image to the <abbr title="embedded MultiMediaCard">emmc</abbr>. But for them to do this, they would have to open the enclosure and locate the maskrom button, very inconvenient.<br />
	Is there a way to trigger rebooting into maskrom from software instead of pushing the button?<br />
	Apparently this is possible on the official radxa OS image by running command "reboot loader" instead of just "reboot", but not on armbian it seems.<br />
	<br />
	After investigating I see linux patches made by the rockchip team for kernel modules like “syscon-reboot-mode” and from the code I see something like that it’s supposed to write the value 0x5242C301 to the RK3308’s GRF OS register 0, and I guess this is supposed to be read by the bootloader to direct the boot to bootmask mode instead of the OS? But the armbian distribution is already built with this kernel module by default, and I even tried to manually write this value to the appropriate registers and then rebooting, and yet nothing works, it just boots to Linux like usual. Anyone have any ideas?
</p>
]]></description><guid isPermaLink="false">54824</guid><pubDate>Wed, 27 Aug 2025 18:00:37 +0000</pubDate></item><item><title>Tip: Make the USB-OTG connection more stable</title><link>https://testforum.armbian.com/topic/53498-tip-make-the-usb-otg-connection-more-stable/</link><description><![CDATA[<p>
	I have long struggled with a problem with my Rock S0: If using the USB OTG port in device mode, the connection would suddenly drop randomly, minutes or sometimes hours after initialization. I spent months on and off looking for solutions, and I finally found one, so here it is if you ever find yourself having the same problem.
</p>

<p>
	Basically, it is caused by the <abbr title="System On a Chip">SoC</abbr> being very sensitive to voltage drops before the USB controller interprets it as the connection being lost. It's far more sensitive than it needs to be, given that my device is bus-powered and so the OS never actually needs to worry about a connection loss. If the connection is lost it is because I have unplugged the cable and so the device would be shut off regardless.
</p>

<p>
	Anyway, the solution lies deep within the RK3308's control registers, where I found the following: Three bits named "B_validsession reference tuning". There's no other explanation on what these bits does in the manual, but it sounded vaguely promising since I had been able to establish that "b-session valid" is actually the name of the status/interrupt that the vbus voltage affects in OTG device mode. Other registers related to the b-session valid status didn't work, however, including filter times, interrupt masks, force high bits, etc. But luckily this one register finally did the trick.
</p>

<p>
	The default value of these three bits are 000. Without any documentation I basically just had to guess what to do, so I tried setting them to 111 instead. And that seemed to work. It significantly lowered the voltage on the vbus pin required to trigger a disconnect signal. My connection was finally stable.
</p>

<p>
	Here's how you can do it yourself. First install memtool via apt, then run: 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">memtool mw 0xFF008018 0x1C001C00</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">53498</guid><pubDate>Thu, 03 Jul 2025 16:35:15 +0000</pubDate></item><item><title>GPIO/Ethernet LEDs overlay for Rock S0</title><link>https://testforum.armbian.com/topic/47802-gpioethernet-leds-overlay-for-rock-s0/</link><description><![CDATA[<p>
	Hi guys, I created another device tree overlay that I needed, to enable two user leds on <abbr title="General purpose input/output">GPIO</abbr>. Specifically GPIO0_B7 and GPIO0_C0, which is pins 27 and 28 on the header. Posting it here in case someone needs it, like I did with with the SPIdev overlay too.
</p>

<p>
	 
</p>

<p>
	Here it is: <a class="ipsAttachLink" data-fileid="13579" href="https://testforum.armbian.com/applications/core/interface/file/attachment.php?id=13579&amp;key=2d92b05ec803ec63896056ea5e560cd3" data-fileext="dts" rel="">rk3308-user-leds.<abbr title="Device tree source">dts</abbr></a>
</p>

<p>
	 
</p>

<p>
	What I needed this for is ethernet port LEDs, since the original connector does not include them. To get standard ethernet LED behavior on these newly defined LEDs, you can do this (you need su access):<br />
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">modprobe ledtrig-netdev
echo "netdev" &gt; /sys/class/leds/rock-s0\:orange\:user1/trigger
echo "netdev" &gt; /sys/class/leds/rock-s0\:green\:user2/trigger
echo "1" &gt; /sys/class/leds/rock-s0\:orange\:user1/rx
echo "1" &gt; /sys/class/leds/rock-s0\:green\:user2/link
echo "end0" &gt; /sys/class/leds/rock-s0\:orange\:user1/device_name
echo "end0" &gt; /sys/class/leds/rock-s0\:green\:user2/device_name</span></pre>

<p>
	(Change end0 to eth0 in the last two lines if you use ubuntu-based image instead of debian-based (minimal).
</p>
]]></description><guid isPermaLink="false">47802</guid><pubDate>Sun, 01 Dec 2024 09:08:38 +0000</pubDate></item><item><title>Looking for the source file or person of the Home Assistant minimal image file</title><link>https://testforum.armbian.com/topic/47654-looking-for-the-source-file-or-person-of-the-home-assistant-minimal-image-file/</link><description><![CDATA[<p>
	I have to try to run home Assistant on the Radxa Rock S0 and I found the image file on <a href="https://www.armbian.com/radxa-rock-s0/" rel="external nofollow">https://www.armbian.com/radxa-rock-s0/</a> under the Dedicated applications images with Armbian Linux v6.6. <br />
	I burn the image on the SD card butt that is all I could do, I'm not able to access the Rock S0 any way so I can't say that is working or not.<br />
	<br />
	Try to use the Putty with COM port but there's no COM port available, neither I can get any IP address so that I would access it trough Putty or locally trough LAN localhost:8123<br />
	<br />
	I would be glad if someone can point me to the author of the image, I try to look on GitHub but couldn't find any Repository.<br />
	<br />
	Any help would be appreciated. 
</p>
]]></description><guid isPermaLink="false">47654</guid><pubDate>Wed, 27 Nov 2024 13:43:57 +0000</pubDate></item></channel></rss>
