{"id":1523,"date":"2026-10-12T17:46:38","date_gmt":"2026-10-12T17:46:38","guid":{"rendered":"https:\/\/justanotherelectronicsblog.com\/?p=1523"},"modified":"2026-10-12T17:46:39","modified_gmt":"2026-10-12T17:46:39","slug":"a-pi-pico-2-pc-for-varvara","status":"publish","type":"post","link":"https:\/\/justanotherelectronicsblog.com\/?p=1523","title":{"rendered":"A Pi Pico 2 PC for Varvara!"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I did tease a bit on the previous blog post, but now it&#8217;s all finished! A PCB to turn the RP2350 board I made into a small PC. It has the following features:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PS\/2 connectors for mouse\/keyboard.<\/li>\n\n\n\n<li>USB hub and 3 USB ports<\/li>\n\n\n\n<li>Audio via an I2S DAC<\/li>\n\n\n\n<li>RTC for timekeeping<\/li>\n\n\n\n<li>NES controller port<\/li>\n\n\n\n<li>MicroSD slot via SDIO<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"697\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-1024x697.jpg\" alt=\"\" class=\"wp-image-1541\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-1024x697.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-300x204.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-768x523.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-1536x1045.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-2048x1394.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So why these? First of all, PS\/2 is nice and simple, but the soldered on connectors I had where a bit annoying. Sadly PS\/2 mice can be a bit hard to find, so I wanted to add USB as well. Of course, for games, a NES controller is fun, and new ones can be bought cheap from Aliexpress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Almost any computer has some form of timekeeping, so an RTC was a no brainer. I wanted to play with audio on the RP2350B, and Varvara has an audio device.  The extra SD is the least needed feature, but I wanted to see how much faster an SDIO interfaced SD card is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, this also meant adding a few missing features to my port of UXN\/Varvara. But let&#8217;s first start with a bit of hardware design!<\/p>\n\n\n<a class=\"wp-block-read-more\" href=\"https:\/\/justanotherelectronicsblog.com\/?p=1523\" target=\"_self\">Read more<span class=\"screen-reader-text\">: A Pi Pico 2 PC for Varvara!<\/span><\/a>\n\n\n<h2 class=\"wp-block-heading\">Hardware design<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On the hardware side, a few peripherals are quite easy to implement. The PS\/2 ports just need to be hooked up in the same matter as I did before. The NES controller also doesn&#8217;t need any external parts, as the RP2350 is 5V compatible. And finally, the MicroSD is also just a connect to the right pins kind of affair! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the RTC I picked the DS1302Z as it&#8217;s cheap and I had some laying around. This is mostly a matter of following the datasheet, make sure there are pullups on I2C and it should be alright!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"801\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1024x801.png\" alt=\"\" class=\"wp-image-1526\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1024x801.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-300x235.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-768x601.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image.png 1232w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">USB and Audio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As I wanted more then 1 USB port, a hub is needed! Luckily, a USB hub is a little easier then I remembered, as there are now very affordable USB hub chips from whc-ic, like the <a href=\"https:\/\/www.wch-ic.com\/downloads\/CH334DS0_PDF.html\">CH334R<\/a>. In terms of extra parts, a 12Mhz oscillator and some series resistors are most of the required parts. For a little protection, I also added a resettable fuse on every USB port and a power switch to turn the VBUS 5V on\/off.  Of course, a proper USB hub would have some more parts, like esd protection and the likes, but eh hobby stuff means we can cheat a little.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"881\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1-1024x881.png\" alt=\"\" class=\"wp-image-1527\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1-1024x881.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1-300x258.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1-768x661.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1-1536x1322.png 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-1.png 1908w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And finally, audio. There are some great libraries for I2S audio for the pi pico, so let&#8217;s use an I2S DAC. I went for the <a href=\"https:\/\/www.ti.com\/lit\/ds\/symlink\/pcm5102a.pdf?ts=1790321130150&amp;ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FPCM5102A\">PCM5102A<\/a> as it&#8217;s a popular IC with affordable dev boards for sale (which I can peek at the schematic of). Again, not a lot to connect, but a few pins are interesting, the FLT, DEMP, XSMT and FMT pins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FLT selects the internal filter, connect to GND for the normal FIR filter, or to VCC for the low latency filter. DEMP controls the De-emphasis. XSMT is the soft mute and FMT is the audio format selection, GND for I2S, VCC for left justified. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here I made a little mistake and I forgot to connect the XSMT pin, so my audio was always muted&#8230; Amazingly this was the only bodge I had to do on the entire board.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"633\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2-1024x633.png\" alt=\"\" class=\"wp-image-1528\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2-1024x633.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2-300x185.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2-768x474.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2-1536x949.png 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-2.png 1758w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">PCB design<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This all got routed on a fairly simple 2 layer PCB. The USB traces should have a controlled impedance, and I tried to calculate the trace thickness, but for a 2 layer PCB this results in some thicc ass traces. The proper way would be a 4 layer PCB so there is less distance between a ground plane and the USB traces but alas, it&#8217;s a hobby board and I&#8217;m just doing full speed USB anyways.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"646\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3-1024x646.png\" alt=\"\" class=\"wp-image-1529\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3-1024x646.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3-300x189.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3-768x484.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3-1536x969.png 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-3-2048x1292.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Software, or adding libraries to the problem!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A couple of things can be added somewhat easily by adding a few existing libraries. <a href=\"https:\/\/github.com\/sekigon-gonnoc\/Pico-PIO-USB\">Pico-PIO-USB<\/a> is a great library that adds USB by using a PIO block. This works together with TinyUSB from the pi pico SDK so the usual examples from the SDK can be used.  The SD card library I used already supports SDIO cards as well, so that&#8217;s easy!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For audio, there is the <a href=\"https:\/\/github.com\/raspberrypi\/pico-extras\">pico extra<\/a>&#8216;s which has a nice sound library with I2S support. And last, for the RTC there is a <a href=\"https:\/\/github.com\/kenwebb\/pico-ds1302\/tree\/main\">pico-ds1302<\/a> library which works great.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, that&#8217;s just support for the new peripherals, I still need to add support to Varvara!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Datetime, file system and NES controller<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s get a few easy ones done first, with a working RTC, datetime support is quite simple. Once a second, read the time and update the ports. Varvara does not support changing the datetime, as normally it runs on a computer with an OS. I added support for writing to datetime ports to be able to do so. The datetime.c file with these changes can be found <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn\/devices\/datetime.c\">here<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Varvara supports two file devices, so having a second microsd slot means we can have that! After adding support to the <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/hw_config.c\">hw_config<\/a> file for the second microsd, it&#8217;s mostly making sure there are two uxnfile structs and copying the filea calls in the <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn\/devices\/file.c\">file device<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The nes controller is polled every frame, the protocol is pretty simple, as there is just an 8 bit parallel to serial IC inside. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"993\" height=\"236\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-4.png\" alt=\"\" class=\"wp-image-1533\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-4.png 993w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-4-300x71.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/09\/image-4-768x183.png 768w\" sizes=\"auto, (max-width: 993px) 100vw, 993px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As can be seen in the timing graph, the latch pin has to be pulsed, and then 8 clock pulses are put on the clock pin. At every clock, the data pin is read in. The data pin is active low, so it&#8217;s inverted to read in a high for each button that can be pressed. The <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn\/devices\/controller.c#L209\">function<\/a> is blocking, but done in a fairly short amount of time so it seems to be fine. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void checkNesController()\n{\n\tuint8_t mask = 0;\n\tgpio_put(m_latchPin, true);\n\tbusy_wait_us(12);\n\tgpio_put(m_latchPin, false);\n\tbusy_wait_us(6);\n\n\tfor (int i = 0; i &lt; 8; ++i)\n\t{\n\t\tmask |= !gpio_get(m_dataPin) &lt;&lt; i;\n\t\tgpio_put(m_clockPin, true);\n\t\tbusy_wait_us(6);\n\t\tgpio_put(m_clockPin, false);\n\t\tbusy_wait_us(6);\n\t}\n\n\t...\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">With these handled, let&#8217;s look at the more interesting peripherals!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Audio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Getting audio to run on anything is always a &#8220;fun&#8221; challenge. For this board, it&#8217;s again two parts. Getting the drivers up and running, and porting the Varvara audio device. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The driver is the Pico Audio driver from the pico-extra&#8217;s repository, and the <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn\/devices\/audio.c#L66\">initialization code<\/a> is based on the <a href=\"https:\/\/github.com\/raspberrypi\/pico-extras\/blob\/master\/src\/rp2_common\/pico_audio_i2s\/audio_i2s.c\">audio_i2s example<\/a>. It initializes a dual channel audio at 44.1Khz, with a 512 byte buffer.  This uses a PIO plus DMA to output I2S data with low CPU load, neat!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wiki.xxiivv.com\/site\/varvara.html#audio\">Varvara<\/a> can generate up to 4 notes, with an <a href=\"https:\/\/producerhive.com\/music-production-recording-tips\/adsr-envelopes\/\">ADSR envelope<\/a> applied. What it does is play a sample from a place in memory with a fixed length, looping until it reaches the end of the envelope. A volume per channel is defined as well. As 4 notes can be played simultaneously, stereo can be done by playing some notes with the volume on zero on left or right.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luckily, most of the code can be re-used. But the uxn11 example used assumed a callback is called when new audio data is needed. The pico audio library doesn&#8217;t work this way. Instead this &#8220;callback&#8221; function is called from the main loop now, and just doesn&#8217;t render any audio when not needed! <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">USB Keyboard\/mouse<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Right, just one block left, USB. The PCB has a USB hub with 3 ports attached, so in the <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/tusb_config.h\">tusb_config.h<\/a>, a total of 4 devices is set as maximum, and usb host is enabled. As I want to use 2 pins via PIO, the usb <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn_rpi.c#L69\">configuration<\/a> contains the pins and pinout (is the first pin D+ or D-). After this USB is initialized and a <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn_rpi.c#L134\">callback function<\/a> is used to handle incoming device calls. Of course, the pin for the 5V on\/off should also be enabled.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m just interested in mouse and keyboard events, so everything else is just ignored :)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void tuh_hid_report_received_cb(uint8_t dev_addr, uint8_t instance, uint8_t const *report, uint16_t len)\n{\n    (void)len;\n    uint8_t const itf_protocol = tuh_hid_interface_protocol(dev_addr, instance);\n\n    switch (itf_protocol)\n    {\n    case HID_ITF_PROTOCOL_KEYBOARD:\n        process_kbd_report(dev_addr, (hid_keyboard_report_t const *)report);\n        break;\n\n    case HID_ITF_PROTOCOL_MOUSE:\n        process_mouse_report(dev_addr, (hid_mouse_report_t const *)report);\n        break;\n\n    default:\n        break;\n    }\n ...\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn\/devices\/mouse.c#L42\">mouse event<\/a> is quite simple, it contains the x and y offset, so how much is moved compared to the previous report, and the mouse buttons. Handling this and controlling the Varvara mouse is very similar to the PS\/2 mouse luckily! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The keyboard however, is a bit less similar. For instance, the keycodes are different between PS\/2 and USB, and on USB, you can have 6 keys pressed at the same time, for PS\/2 you just have to worry about one! And on PS\/2 you get a nice pressed\/released event per key. With all of this, the <a href=\"https:\/\/github.com\/riktw\/uxnpico2\/blob\/c7d3fb4e0f07d543f3c7f73d9d1ea7bd7fda4cfe\/uxn\/devices\/controller.c#L269\">code<\/a> to handle USB keyboard reports is a tad more involved.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At this point, with HDMI, SDIO for MicroSD, I2S audio and USB, all the PIO&#8217;s of the RP2350 are in use. I guess that&#8217;s a new achievement unlocked! <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What else can we run?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, being able to run Varvara is a lot of fun, and the goal for this project for me. But there has been a ton of computer stuff ported to the RP2350. One of the more famous examples is the pico-mac! So let&#8217;s see if that runs on this little board too. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"822\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12-1024x822.jpg\" alt=\"\" class=\"wp-image-1540\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12-1024x822.jpg 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12-300x241.jpg 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12-768x617.jpg 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12-1536x1233.jpg 1536w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_4_2026-10-08_19-34-12-2048x1644.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cool! So that took a little bit of porting effort, though I did already port it to the RP2350 BellsNWhistles beforehand. With audio already done before, adding that in was pretty easy! It can be used with the on board USB and no audio so the PC Board is not needed by setting the PCBOARD cmake argument to zero in the CMakeLists.txt<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> set(PCBOARD 0 CACHE STRING \"PCBoard used\")<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">That concludes the &#8220;little&#8221; dive into UXN and Varvara! I started experimenting with this a few years ago with the RP2040, but now with the RP2350 it finally runs pretty well. It&#8217;s a mostly feature complete implementation and uses almost all of the RP2350! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All it took was several months, a custom RP2350B board that&#8217;s now for sale on <a href=\"https:\/\/www.tindie.com\/products\/riktwi\/rp2350b-bellswhistles-board\/\">Tindie<\/a> and another board to turn it into a small PC, whoops&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, all code can be found on github for <a href=\"https:\/\/github.com\/riktw\/uxnpico2\">Varvara<\/a>, <a href=\"https:\/\/github.com\/riktw\/pico-mac\">pico-mac<\/a>, <a href=\"https:\/\/github.com\/riktw\/RP2350B_BellsNWhistles_pcboard\">PCBoard<\/a>, and the <a href=\"https:\/\/github.com\/riktw\/RP2350B_BellsNWhistles\">BellsNWhistles<\/a> board. I also sell the BellsNWhistles board on Tindie now!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Huge shout out to the people behind UXN, and the <a href=\"https:\/\/100r.ca\/site\/home.html\">amazing content <\/a>they make from a sailboat!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As always, if you enjoyed this blog post, you can buy me a <a href=\"https:\/\/ko-fi.com\/riktw\">coffee<\/a>!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I did tease a bit on the previous blog post, but now it&#8217;s all finished! A PCB to turn the RP2350 board I made into a small PC. It has the following features: So why these? First of all, PS\/2 is nice and simple, but the soldered on connectors I had where a bit annoying. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-1523","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A Pi Pico 2 PC for Varvara! - jaeblog<\/title>\n<meta name=\"description\" content=\"Let&#039;s continue porting UXN\/Varvara on a custom RP2350B based board, now with an additional PCB to add some more peripherals\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/justanotherelectronicsblog.com\/?p=1523\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Pi Pico 2 PC for Varvara! - jaeblog\" \/>\n<meta property=\"og:description\" content=\"Let&#039;s continue porting UXN\/Varvara on a custom RP2350B based board, now with an additional PCB to add some more peripherals\" \/>\n<meta property=\"og:url\" content=\"https:\/\/justanotherelectronicsblog.com\/?p=1523\" \/>\n<meta property=\"og:site_name\" content=\"jaeblog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-12T17:46:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-12T17:46:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1742\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"riktw\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"riktw\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523\"},\"author\":{\"name\":\"riktw\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"headline\":\"A Pi Pico 2 PC for Varvara!\",\"datePublished\":\"2026-10-12T17:46:38+00:00\",\"dateModified\":\"2026-10-12T17:46:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523\"},\"wordCount\":1697,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/photo_1_2026-10-08_19-34-12-1024x697.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523\",\"name\":\"A Pi Pico 2 PC for Varvara! - jaeblog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/photo_1_2026-10-08_19-34-12-1024x697.jpg\",\"datePublished\":\"2026-10-12T17:46:38+00:00\",\"dateModified\":\"2026-10-12T17:46:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\"},\"description\":\"Let's continue porting UXN\\\/Varvara on a custom RP2350B based board, now with an additional PCB to add some more peripherals\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#primaryimage\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/photo_1_2026-10-08_19-34-12.jpg\",\"contentUrl\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/photo_1_2026-10-08_19-34-12.jpg\",\"width\":2560,\"height\":1742},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?p=1523#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Pi Pico 2 PC for Varvara!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#website\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/\",\"name\":\"jaeblog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/#\\\/schema\\\/person\\\/d77e39721321c4a472b49909a8f1982b\",\"name\":\"riktw\",\"url\":\"https:\\\/\\\/justanotherelectronicsblog.com\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Pi Pico 2 PC for Varvara! - jaeblog","description":"Let's continue porting UXN\/Varvara on a custom RP2350B based board, now with an additional PCB to add some more peripherals","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/justanotherelectronicsblog.com\/?p=1523","og_locale":"en_US","og_type":"article","og_title":"A Pi Pico 2 PC for Varvara! - jaeblog","og_description":"Let's continue porting UXN\/Varvara on a custom RP2350B based board, now with an additional PCB to add some more peripherals","og_url":"https:\/\/justanotherelectronicsblog.com\/?p=1523","og_site_name":"jaeblog","article_published_time":"2026-10-12T17:46:38+00:00","article_modified_time":"2026-10-12T17:46:39+00:00","og_image":[{"width":2560,"height":1742,"url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12.jpg","type":"image\/jpeg"}],"author":"riktw","twitter_card":"summary_large_image","twitter_misc":{"Written by":"riktw","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#article","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523"},"author":{"name":"riktw","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"headline":"A Pi Pico 2 PC for Varvara!","datePublished":"2026-10-12T17:46:38+00:00","dateModified":"2026-10-12T17:46:39+00:00","mainEntityOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523"},"wordCount":1697,"commentCount":0,"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-1024x697.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/justanotherelectronicsblog.com\/?p=1523#respond"]}]},{"@type":"WebPage","@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523","url":"https:\/\/justanotherelectronicsblog.com\/?p=1523","name":"A Pi Pico 2 PC for Varvara! - jaeblog","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#primaryimage"},"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12-1024x697.jpg","datePublished":"2026-10-12T17:46:38+00:00","dateModified":"2026-10-12T17:46:39+00:00","author":{"@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"description":"Let's continue porting UXN\/Varvara on a custom RP2350B based board, now with an additional PCB to add some more peripherals","breadcrumb":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/justanotherelectronicsblog.com\/?p=1523"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#primaryimage","url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12.jpg","contentUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2026\/10\/photo_1_2026-10-08_19-34-12.jpg","width":2560,"height":1742},{"@type":"BreadcrumbList","@id":"https:\/\/justanotherelectronicsblog.com\/?p=1523#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/justanotherelectronicsblog.com\/"},{"@type":"ListItem","position":2,"name":"A Pi Pico 2 PC for Varvara!"}]},{"@type":"WebSite","@id":"https:\/\/justanotherelectronicsblog.com\/#website","url":"https:\/\/justanotherelectronicsblog.com\/","name":"jaeblog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/justanotherelectronicsblog.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b","name":"riktw","url":"https:\/\/justanotherelectronicsblog.com\/?author=1"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1523"}],"version-history":[{"count":14,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1523\/revisions"}],"predecessor-version":[{"id":1547,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1523\/revisions\/1547"}],"wp:attachment":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}