• Please review our updated Terms and Rules here

Trs-io

So I’ve almost completed the hardware portion of my Trs-io and like others am having problems compiling the esp32 project. I’m using vs code and am getting exasperated with bad cmake errors. Any advice?
I managed to successfully build the project in the end under a Debian 11 VM.
The main thing I did to get it to compile was to use v4.3.3 of esp-idf, other versions caused the build to fail near the end.

The attached file contains the steps I followed which originally came from here, I then altered with the esp-idf version and where the bin files are created.

Good luck,
Tim
 

Attachments

Thank you, thank you! This worked and my ESP32 is now flashed. Still waiting on a couple chips to finish the build. I probably would have figured this out eventually but I think it would have taken hours. There should be a link to this file in the github!
 
Sometimes it's good to talk to yourself if only to leave a log for someone to find via google later on.

I made my own board, but then got sidetracked for a while; I'm back to trying to get the ESP32 code built. Having found the various libraries I'm as far as:

Code:
CC build/bootloader/bootloader_support/src/bootloader_flash.o
at 1: error 131: cannot generate code for target 'longcalls'
make[4]: *** [/home/phlap/esp/esp-idf/make/component_wrapper.mk:292: src/bootloader_flash.o] Error 1
make[4]: Leaving directory '/home/phlap/MINIPRO/trsnic/src/esp/build/bootloader/bootloader_support'

This is at step 5 ("make" in the TLD). As far as I an see I've got the right CC being executed; suggestions?




I used JLCPCB - the (now slightly out-of-date) gerbers on pski's site uploaded fine and the whole thing was cheap and easy.

PJH

Indeed... I've built the hardware and have also landed here due to not being able to figure out how the heck to build and program the esp32...
 
Let me know if you still need some info. I do have older bin files I can provide if that helps at all. I actually wrote up some instructions back in 2020 that I sent over to @misterblack because he was planning on building one out and doing a video on it, but he lost interest so that never happened. My instructions are probably a bit out of date though since I know they've made some updates since then (and even a new board)

I actually wish there were some instructions on the trs-80 programming side of it, since i have a few things i think would be cool to program (like maybe have the trs-80 scrolling news headers or crypto stock ticker or whatever), but i can't quite figure out how that piece of it works.
 
Hi guys, I just picked up my first Model 3 and really like the idea of building a TRS-IO to connect it to a Samba share on my Synology instead of messing with floppies.

I'm wondering which board would be best for me to build. I downloaded the package from GitHub and I see there are seven versions of the board for the M3.
The v2 boards all have an additional Nano9K module for video but there doesn't seem to be a changelog or updated BOM for anything past the TRS-NIC and TRS-IO v1.1.
The v1.2 boards add a MCP23S08 for I2C and a new J7 on the back, is that for programming the ESP or GAL inline? I'm curious about the V2 board that david_ellwood is building. The picture posted here doesn't match any of the M3 v2's so I'm assuming it's one of the M1 boards, but is there a BOM or did you cross up the through hole parts to surface mount on your own?

I'm thinking about building the v1.1 like the OP ngtwolf because it looks relatively easy. Would that be all I need for the SMB file access?
Also, does anyone know if the v1 trsnic from GitHub is basically the same as the v1.1 trs-io from the m3 folder on GitHub?
 
I answered a couple of my previous questions by loading KiCad and comparing the designs in the M3 folder.
Below are my findings, posted here just in case it helps anyone else who is curious.

v1 [June 2019] Original redesign of RetroStoreCard, also same as Trsnic v1
v1.1 [December 2019] Added R4 (4K7) pull-up resistor, Added FreHD Disable jumper
v1.2 [August 2021] Added MCP23S08 and J7 SD Card Connector, Added R5,R6,R7,R8,R9,R10,R11 (all 10K), Added Edge Connector to PCB
v1.2b [March 2022] Unknown change
V2 [July 2022] New larger board with video module
v2.1 [August 2022] Added audio jack and additional circuitry.
v2.2 [September 2022] Unknown change

After looking at a few datasheets on Digikey I haven't been able to determine what the correct part # would be for the J7 SD connector yet.
The right-angle version of switch 1825910-6 is 1825027-5 just in case you wanted to mount the switch on the edge of the card in the SW2 location.
 
Has anyone produced a complete version up on EasyEDA so an order can be sent to build this? There is quite a bit of information up in Github, but quite frankly even though I am familiar with building projects myself, the sheer amount of effort to find the right items, make sure I have the right version of the Gerbers, and all other aspects for this make it difficult to carry it through to fruition. Thanks!
 
So I finally got around to installing a Debian 11 VM and tried going throught the instructions from @troff

got as far as line 25 - ./install.sh

where I got issues with the github files not being accessible:

1678982847462.png




Did they remove the repository?
 
I managed to successfully build the project in the end under a Debian 11 VM.
The main thing I did to get it to compile was to use v4.3.3 of esp-idf, other versions caused the build to fail near the end.

The attached file contains the steps I followed which originally came from here, I then altered with the esp-idf version and where the bin files are created.

Good luck,
Tim
I managed to get the project to compile in a Debian 11 VM, but I had to use v4.4 of the esp-idf.
For some reason I couldn't get it to work with 4.3.3.
 
Last edited:
For anyone else who lands here, looking for instructions on how to compile and flash an ESP32 with TRS-IO, let me save you some time!
I have just successfully build the code for a Model 1, but I have included everything I have learnt in the process which is relevant for anyone building a Model 3 or TRS-IO++ variant as well.

https://www.realtime.com.au/retro/index.php/trs-io-for-system-80/#ESP32-firmware-compilation

I will be updating this page as I progess on the project. Just getting the code compiled has been difficult, due to the lack of information. Building the hardware is yet to be started.
 
For anyone else who lands here, looking for instructions on how to compile and flash an ESP32 with TRS-IO, let me save you some time!
Thanks for sharing. I know compiling is a pain and asking around when i did this got me nowhere (most people who knew how to do it were more invested in the frehd)... eventually someone gave me their compiled version so it's great to see someone documenting this.
 
I have one of the first original TRSIO boards. I have one for the M1 and another for the M3/M4. They still work fine.

I looked and the new ones have a whole Tang Nano added to the design. What new features did they gain that I can't do with the original card?

EDIT: I see now it has an HDMI video output and audio output. That's really odd. Was this intended to replace a whole TRS-80 at some point and not just be an addon card?
 
Okay it could be that I'm fairly new to this whole thing of assembling my own board so bear with me. I have a model 3 so I uploaded the latest revision in the m3 folder - v2.2a - to JLCPCB. It was a great price so I went ahead and ordered it. Was talking to some people about how excited I was to do this. They pointed out that this board I ordered has spots for surface mount components. The bill of materials on the Github page only lists through hole components though. Is there an updated BOM to reflect the v2.2a board?
 
Also where do I get the cable that connects this board to the I/O bus jack on the motherboard?

This I/O bus jack edge connector comes down through the bottom of the case. How do I install this card internally?
 
I have just completed building a TRS-IO for the Model 1. It mostly works great, although I have a problem using the Retrostore client. When I launch the Retrostore client I can browse the software OK, but when I try to download almost any of the games, my TRS-IO seems to crash. Specifically, the esp32 on the TRS-IO reboots, or the Retrostore client gets stuck. I can download one or two games OK, eg. the "Defuse" game, but most cause the TRS-IO to crash. My theory (untested) is that the ones that work are very small games that download quickly.

If I monitor the serial output from the esp32 when I download, I get some error messages with the most relevant one (I think) being:

E (91159) DataFetcherEsp: Failed to allocate memory for output buffer

I have tried the rsclient.cmd from the Github repository, a version newly built from the source code and a typed-in Basic client, but they all behave in the same way.

Everything else seems to work OK including booting a DOS from the SD card or the smb mounted directory and the HDMI output works great.

My system is a stock TRS-80 model 1 without the lower case mod. I have built the V1.4 hardware for the model 1 and programmed the FPGA accordingly. The software is the current version on Github, V2.4, commit ec8c642, which I eventually got to build after having lots of problems too numerous to mention in this first post.

Anyone have any ideas on how I should go about fault-finding the problem?
 
An update to my previous post.

Since the problem seems to be related to running out of memory, I tried a couple of potential lower memory options and I found that if I don't have an SD card mounted (same software, just without an SD card inserted) then the Retrostore client seems to mostly work. I presume this is because it now has memory available that would otherwise have been used by the SD card software.

So, my question now becomes, does anyone else have the same behaviour or do I still have an issue with the software or hardware of the esp32 board on my TRS-IO that is causing a low memory situation when there shouldn't be one?

If this is just a "feature" then I am happy with that since the TRS-IO card is great otherwise and I can remove the SD card when I want to use the Retrostore.

Thanks in advance for any help and advice.
Mark
 
@MarkRB Which specific ESP32 module/board are you using? These things come in quite a few variants.

^ shows what a 30-pin or 38-pin module compatible with the simpler (no FPGA?) board should look like.

^ closest thing I can find on the github repo to your "v1.4" board

I don't know much about this project, but the V1.3 board shown appears to have an ESP32 module with an ESP-WROOM-32U SoC on it...

U should just mean it has an u.fl antenna connector rather than the PCB antenna used with the WROOM-32, WROOM-32D...

The primary question here is about the SoC/module/board that you are actually using, in case it meaningfully differs.


^ there's some info on different versions of the silicon for various ESP32 chips

P.S.

ESP32 vs ESP32S might be important here.
 
Last edited:
Thanks, @Istarian, for the extensive reply.

I have never used an ESP32 module before and so it is quite likely that I have bought the wrong one. The one I bought was from this listing on Aliexpress.com:


Specifically, I bought the 5th option labelled ESP32-32U and it has 38 pins. Apart from the printing on the metal can, it looks exactly like the one in the second and third pictures in @Istarian's post. My module has ESP-32U printed on the metal shield and doesn't mention Espressif or WROOM. There is no mention that it is an S variant on the package. Now I am worried that I might have bought a lower spec clone.

However, the code seems to do a lot of diagnostics when it starts up (attached) and seems to be quite happy about the device, i.e. it reports no errors (apart from failing to detect an SD card because it is not inserted).

And so the waters are still muddy for me! Has anyone successfully used, including the Retrostore client, an ESP32 module labelled ESP-32U?

Thanks again
Mark
 

Attachments

From what you have describe, I think the module/board you are using is probably okay.

Do you have a picture of the actual unit?

E (91159) DataFetcherEsp: Failed to allocate memory for output buffer

Searching google for that message yields results which suggest that your memory allocation error could be a result of the program not being able to allocate a sufficiently large and continuous region of heap memory.

I.e. the problem is memory fragmentation.
 
Back
Top