Share your projects


I bought a Home-Assistant (HA) Yellow. It requires a separate purchase of a raspberry pi computer module and an m2 disk.
This weekend I tried installing it but I think the drive is faulty. But the process of installation didn't help, it probably goes fine if it works which is hopefully so for most people.

My process:
I installed the SSD in the HA, the pi was already installed (it's the 4GB RAM version). It's a Samsung disk, some no-label OEM version, but probably 970/980-ish.
I created a micro-SD card with the correct PI image installed on it, via Raspberry Pi Imager with the HA-yellow image. Inserted that in the provided SD-card converter, and that in a SD-USB-adapter. The SD-card bundled converter was faulty btw, so I replaced it with one that I knew was working.
I connected the network cable, SD-USB-adapter (with SD inserted), and powered the unit with the provided power adapter.
The unit booted and I noticed an IP was requested on the router, so the networking was working. I assume installation was happening, the yellow light was blinking but it didn't turn to the long period of blinking (the 5sec on/off). So I just waited until it appeared idling and powered the unit off.
I removed the SD-USB-adapter and powered the unit on again. The unit appears idling and no IP address was requested.
Obviously something was wrong, I didn't know what, so I tried the steps a few times over. I also checked the jumper settings, but those were fine. I also removed the SSD to see if it would improve without, but same result.

I read that if the SSD already had some partitioning on it this issue might happen. But as I don't have some m2 adapter to format the drive, I started the direct installation options.
I switched the boot options by holding both blue/red button for 10sec after powering-on. I also switched jumper from UART to USB, and booted into recovery option.
After installing rpiboot and going through the procedure I was presented with an invalid USB device error in windows. I rebooted my pc and reinstalled the drivers, but same result.

I switched to my Linux box, but turns out that had a full disk. My / had 0 bytes free, causing the desktop to fail to boot. I switched to the terminal view (CTLR+ALT+F1) and removed some files, rebooted into desktop mode and checked why my disk was full.
After removing tux kart I had enough free to install my pending updates. I ran apt-get clean and autoremove. I also found some script to remove redundant snap packages, which freed up enough disk space. (https://www.debugpoint.com/clean-up-snap/)
cleanup-sh.png
I installed raspberry pi imager and build rpiboot, after already having installed usblib-dev (I installed it first as snap, but that failed on missing libusb).
Bash:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
git clone --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
sudo ./rpiboot
I got the same result as on the windows box.

Online I see HA yellow / raspberry pi 4 compute doesn't always support all SSD brand/types, which I didn't really expect with using a Samsung disk, so I still hope that part is fine.
I read that a failing usb device-descriptor might happen due to a bad usb-C cable. So I switched to a different higher quality cable, same result.

I realized my raspberry pi 4 compute module doesn't feature the eMMC module, so this procedure might not work.
To make sure the disk is actually found I switch the jumper back to UART and tried connecting to the HA unit with the usb-C cable and using PuTTY. https://yellow.home-assistant.io/guides/use-serial-console-windows/
But no COM port was popping up, turns out the drive of this UART module wasn't recognized (missing driver).
So I searched for the driver on the web, as windows didn't find it, I found it here: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
After installing this driver I could connect to it on COM3 / 115200 (user=root), don't forget to press Enter to actually see the login screen.
I didn't find any SSD in dmesg / lsblk or /dev/disk/. So I assume that my SSD is faulty.

So I ordered a m2 nvme disk enclosure, so I can check the SSD on a PC. I also ordered a new m2 SSD (one that is claimed to be supported by HA) so I have a working unit.
To be continued...
 
  • Wow
Reactions: rSl
Installed a brand new disk and it worked. No issues: installed and was up in few minutes.

The other disk was placed in a USB-carrier and works on my pc, so I assume the raspberry pi just didn't see this disk at all for some reason.
 
Last edited:
  • Like
Reactions: rSl
I've gone off on yet another tangent. I've created a couple of extensions for the Scite text editor.

They get the character count of an entire document/selected block of text respectively.
  • Add the contents of the properties.txt file to your SciTEGlobal.properties or SciTEUser.properties file depending on personal preference
  • Move the char_count.lua file to your Scite application directory
  • When you next start Scite two new entries called Document Char Count and Selection Char Count will have appeared in the tools menu
Tested with Scite 5.3.8.

*Attachment removed due to release of updated version*
 
Last edited:
I had to look up scite and noticed

For macOS, there is a commercial version of SciTE available from the Mac App Store.

Stupid Mac users..
 
Here's an updated version of my Scite extension. You can now get the document/selection line count as well as the character count.
  • Add the contents of the properties.txt file to your SciTEGlobal.properties or SciTEUser.properties file depending on personal preference
  • Move the eld_count.lua file to your Scite application directory
  • Delete the char_count.lua file because its no longer needed
  • When you next start Scite four new entries called Document Char Count, Selection Char Count, Document Line Count and Selection Line Count will have appeared in the tools menu
Tested with Scite 5.3.8.
 

Attachments

  • scite_eld_count.zip
    3.6 KB · Views: 170
  • Like
Reactions: rSl
I've uploaded a new version of cfgcreate to my website.

New features:
  • An additional file menu entry (New File)
  • Hotkeys (list contained in readme file)
Tested with Python 3.10.11.
 
  • Like
Reactions: rSl
Created a VR demo in OpenXR to run on the Pico4 VR headset. Which should be easy, but I'm running into issues with Unity that appear to have nothing to do with my own project.
Just switching from 2022 LTS to 2023 fixed my main compile issue for example.
 
  • Like
Reactions: rSl
Its only an Idea, but i plan a "Farming Simulator 22 Unimog Lets Play Projekt", as the GPD Win Mini is fast enough to get decent FPS when Screen Recording is activate..
I will talk about my Experences whit our Unimog, some background info stuff, and try to get the work down on my Farm whit only this U425 (not the one from the official Modhub, but one i got from an external Mod Website as this got Simple IC ^^ , ) , only when i need something to load stuff or an Combine Harvester, i will use these, but i try to get Oldtimer Mods for this task ^^
The projekt will be in German though, its much more naturall for me..
 
This is a weird one: ways to view DNA. So using my perl-fu, i converted a codon (3 letter DNA) into a single character.

While doing that I found out that it is contested that Iching is constructed bottom up, not top down and that, potentially, the UNICODE Table is wrong.
I also copied the homework of https://octomatics.org/ and made (deca)hexomatics, where each line downwards means it's a Purine (A/G) else it's a Pyrimidine (T, C, and U)

Code:
T C C   = 000101 [05] = ䷣ = ╶┴╯ Serine           36 Censorship
A A G   = 111110 [62] = ䷫ = ├┼╮ Lysine           44 Temptation
G A G   = 101110 [46] = ䷱ = ╭┼╮ Glutaminezuur    50 CosmicOrder
G G G   = 101010 [42] = ䷿ = ╭┬╮ Glycine          64 Before the End
T T T   = 000000 [00] = ䷁ = ╶─╴ Fenylalanine     02 Receptive
G C A   = 100111 [39] = ䷙ = ╭┴┤ Alanine          26 Potential Energy
C C T   = 010100 [20] = ䷦ = ╰┴╴ Proline          39 Obstacles
T A C   = 001101 [13] = ䷶ = ╶┼╯ Tyrosine         55 Zenith

These are the stop-codons, oor scissors, I was hoping that ╶┼┤would be used the most, but alas (still only the first 1000 letters)

Code:
T A A = 001111 [15]  = ䷡ = ╶┼┤ /Ochre  (254 times)
T A G = 001110 [14]  = ䷟ = ╶┼╮ /Amber  (174 times)
T G A = 001011 [11]  = ䷵ = ╶┬┤ /Opal   (387 times)

Long story short: Have you had those games on tapes that went piiiiii kshrfgasf piiiiii kfasfaasfvvaghgjkgkgk... well, it just like these anomalies in the first 1000 characters of the first gen (need to make a full picture of that, not included).

Long term I want to look into stenography inside DNA (the reason why 4 codons only code a single animoacid, and why the disparate frequencies). I'm a programmer, not a biologist, so my angle is different, as you can see.
 

Attachments

  • notepadpp_anomaly_start.jpg
    notepadpp_anomaly_start.jpg
    730.7 KB · Views: 96
  • dna2.png
    dna2.png
    317 KB · Views: 109
  • isolated.png
    isolated.png
    30.6 KB · Views: 104
  • dna1.png
    dna1.png
    338.3 KB · Views: 106
Hello everyone! Long time no see.
just popping in to share my latest release, for the TRS-80 Color Computer and Dragons.
The game was made with ugBasic, a super nice modern Basic that can output to various 8bit systems.
This one game is a mix of Barbarian, Samurai Shodown, Prince of Persia and Moonstone. :D
Here is the trailer:

It is going donation ware this month and then free and open source + some articles/tutorials on how it was done.
Cheers!
 
I fixed my walkman wm-36. Replaced two belts and now it's better than ever, the warble is gone and fast forward is faster! Amazed at how easy it was to repair. Dunno why.


1716998111021.jpeg


It's the best walkman ever btw. because of the eq. i got mine for £29.

1716998207512.jpeg
 
I rewrote my stream oriented network monitor pacmon in rust. It shows you which corporations and countries your processes are communicating with along with other stats. Check it out. Your data might be going to Pyongyang (like mine was)


1717712480516.png
 
Last edited:
The idea behind pacmon is to be like top, ordering streams by (a) recent activity (aka current speed) or (b) total bytes transferred. Then update periodically eg every 3 seconds so the stats are more stable. But if you set the refresh interval to something quick like 200ms you get an interesting realtime timeline of network activity trickling in. It's like human readable and digested tcpdump output. It's crazy how much my computer talks to google and facebook (which I don't use).

I'm surprised I have never heard of anyone else being interested in which corporations your devices are talking to. Pretty basic privacy ask. I think I'll add another mode that aggregates by "corp".

1718354445385.png
 

Now if you press 'c' you enter corporate mode which aggregates network stats by corporation.

1718898923377.png


You may know what Hertzner Online GmbH is pyra-handheld.com's hosting service and are wondering why it's allegedly located in Finland. I don't know if it's true but I double checked with ip geolocation and it says the same thing.
 
Last edited:
I've had an idea for a while about an eg ipad system extension Tit4Tat that restricts gaming / social apps until you have done enough educational apps. basically you earn entertainment through educational attainment thereby channeling the addictiveness of apps for good. put a 4 year old in a room with an ipad for a few months and they come out fluent in french, hexadecimal, combinatorial logic or arbitrarily brainwashed actually (which is ok because it's by the parents). seriously. stimulating very young sponge minds to focus on things that become much harder later in life seems like untapped potential. what do you think? I'm sure things like this exist I'm talking about really leveraging it because kids learn so quickly. a teaching methodology on steroids..
 
  • Haha
Reactions: rSl
I see what you mean, but I'd fear it'd demolish intrinsic motivation for learning.
On another note, pitch your plans to religious interest groups and you shall be funded.
 
I'm glad to say that I can fully concentrate on making games. I haven't been downloading that many videos as of late so I've been using yt-dlp directly via the terminal instead of using my frontend. As for to-do lists etc, I stumbled across Zim and have been using that instead of developing my own application further because there was no point in doing so.
 
An industrial 386 Frankenstein rebuild
Or: Doing stupid things for dubious fun and no profit.
Or: moral of this story: Don't spend an entire holidays at home. Or you will start to poke FPU with logic probe :).

Last week I was reviewing electronic trash in the market when I noticed an unusual PC casing: It had two handles, was made of a heavy sheet metal and had a cover with a small window for drives bay. What was more important, it was an industrial AT or AT-like casing, so one of these things I look for as I have a lot of AT mainboards, and have nothing to put them into. I inspected it, it was even complete, including an AT power supply.

A photo, from the Internet, of such case: 1963a.JPG

The keyboard connector is present on the front panel, inside its cable ends with a proprietary connector. While there is a (never used and factory-blocked) hole for rear keyboard connector, it looks like it doesn't fit together with AT mainboard's mounting holes. Means, inside there was something other than an AT mainboard.

1. Mechanics
The lock was not working, so I decided to replace it. Contrary to its appearance, the lock from an old floppy disk box will not fit and will turn around. The next size is definitely too big, in between there is an NCR-type lock used for cash registers. I had a few spares of these, so I installed one, however significant changes had to be made:
- The hole had to be made a bit bigger and more rectangular
- The bolt had to be filed down to the size
- The lock's cuts for installing the mounting spring had to be slightly enlarged towards rear of the lock.
- The casing's hole used for the bolt was made for an L-shaped rotating bolt, the previously installed lock had a flat rotating bolt and the NCR uses a flat sliding bolt. It had to be enlarged a bit.
Generally, this material is very hard when it comes to machining. Fitting a new lock took me over 5 hours, but after the operation I had a case with a working lock! After finding the proper screws I had a complete casing.

There is an interesting cooling system in the case, a single, powerful 12V fan blows air from the outside through a filter, so the inside is always kept in a bit higher pressure. Because this pressure is maintained using a filter, the dust cannot enter the casing and everything inside is relatively clean.

When I found it will be OK, I disassembled it entirely, washed it, dried with cloth, then in air, and then re-assembled. During cleaning, I found an old inventory sticker showing that in the 1990s it contained "486DX 33 4MB 400M". I have specs now!

2. What to fit?
There are no chances that I will find this specific 486 mainboard, especially that it was an industrial "riser+CPU" mainboard. I have a bad experience with these, maybe I'm doing something wrong but they all fail in a riser when more than 1 expansion boards are used. The symptom is like... like putting a normal ISA card to the slot 8. Data does not always get transferred, DMA is shoving rubbish or zeros, etc. So I reviewed my mainboards and ignored the DX4/100, moving towards the 386. Finally I found the 386DX/40 in the FIC 4386-VC-HD mainboard. This may be good as an industrial machine which was a 486. The OTI VGA came next, and Goldstar Prime 2 ports controller. I found a 400MB Maxtor hard disk to install something at least close to the original specification. Mounted on the desk, tested, verified. Works well.

How about the power supply? The casing is protected against vibrations too, so every cable conducting more than 12V is led in edges, being held with special plastic straps to the dedicated screw posts. While I have AT power supply units, I don't have one that has 120 centimeters of power cable. So I bought 3m of 4-wire 230V cable for the purpose of replacing it in one of my spare AT PSUs, when I got another thought:

I have a lot of dead ATX power supplies, maybe I can make an AT power supply of these?

I keep these in the form I can push to the recycling plant: Casings are separated from the internals. Fortunately they are mostly interchangeable, so I found an old ATX power supply casing which had this legendary display power connector and started reviewing dead ATX power supply PCBs. And I can repair most of my ATX supplies when the problem is simple, like capacitors or the comparator chip's reference diodes. So my dead boards contained ones with primary defects (instantly rejected), suspicious burns near transformers (rejected because may be unreliable) and a few suspicious chips. One was looking quite well, I tested its capacitors but it still could not run despite having +5VSB present. This looks promising.

I assumed the secondary is the culprit, but not capacitors. I connected the ohmmeter to the coupler and started to feed the voltage thru the output to see the changes - as expected, the optocoupler was dead. Replaced. Still could not turn it on, but I found it unusually hot during test. There is nothing to be hot in the optocoupler, so the problem sits still somewhere in the secondary side.
The next test is feeding the voltage about 5-10% lower than nominal and looking at the current draw. Yes, +12V draws 4 amps which finished my regulated power supply's abilities, this doesn't look as designed.
So I started to backtrack the 12V until I got to the Schottky's rectifier. One diode was shorted, I replaced it. I have also found the main culprit - the disc capacitor near rectifier was shorted. It overloaded the 12V line right before all protection mechanisms, causing the diode to overheat and optocoupler to switch to the "full ahead into the transformer" condition, destroying them both.
So after replacing the rectifier, the capacitor, the optocoupler and, for a good measure, a few electrolytic capacitors I became a happy owner of a working 300W ATX power supply's internals. A quick test with shorting PS_ON to ground shown that it can be jump-started when supplying 230V to it, and 3.3V has no feedback - a perfect candidate for the AT remake.

Time to modify the power supply casing. I drilled a second hole, installed the cable and the protective plastic "bead" to make sure the metal won't damage the 230V cable, crimped power switch connectors about 100cm from the power supply. The longest part was hand-soldering two 2xMolex wires and a full 45cm AT wire set, including crimping the AT connectors (they are harder and harder to get) and tying the cable with twine. Finally, having a complete power unit, I installed it in casing...
...only to find that I have to install this auxiliary +12V connector to the fan and I had to unscrew it again. Totally forgot about it!

But hey, now my casing has a power supply unit!

3. The mainboard
The FIC 4386-VC-HD is the mainboard which has no problems with leaking rechargeable battery. Instead, it has a problem with the soldered-in Dallas 1287 RTC with built-in battery which, when dead, causes the mainboard to reset BIOS settings and stops the RTC. The easiest way to desolder this Dallas I found was to use desoldering needles. These are a small, hollow needles made of stainless steel which are inserted between the pin and the hole in the board, when the solder is heated to a liquid. Finally, if the needle goes straight through the board, the soldering iron is removed, the needle is twisted when the solder solidifies, separating the pin from the hole. After processing all 18 pins, circuit can just be removed from the board with fingernails. Installed a 24-pin socket there and decided to rework the Dallas chip.

To rework the Dallas chip, it is needed to hold it in a vise showing its side. Next, a hacksaw is used to remove two strips of outer shell, in places of battery's + and - terminals. The plastic inside is soft, many tutorials recommend a drill with a machining add-on, in fact this plastic can be easily cleaned with a sharp tip of jeweler's screwdriver or small, 12V PCB drill. Generally at least one of the uncovered terminals should be removed from the dead battery, and then the CR2032 holder can be installed. I glued it to the top of the chip, having one terminal soldered right to the exposed connector, while the other soldered with a wire.

The second problem was the keyboard - I buzzed the connector with the multimeter to get the pinout and decided I will install additional small PCB joined to the mainboard's unused mounting hole, converting the casing's internal keyboard connector to the set of wires I could solder to the mainboard. The most important thing there: The 5V for keyboard must not be any 5V found nearby, but specifically a 5V from DIN socket as it's a 5V thru the fuse. After fuses, but before DIN socket, there are ferrite coils, their outputs are handy to solder wires on.

4. Putting it together
After installing mainboard, drives and expansion cards the computer started normally. As it is the industrial PC, I searched my old software library to find some software for it, and then I found why there was a 486, not a 386.
The LV2.5, program for visualizing and simulating control systems for Windows 3.x, requires an FPU. 386Dx does not have an FPU, which stands for Floating Point Unit, or this expensive math coprocessor.
I had one, an ULSI DX/DLC which I could put to the FPU socket, clearly visible near this large fan blowing air inside. So I installed it, started and had tested the machine.

5. The FPU instability
Then, the first crash happened. It was during a run of the typical tank filling-heating simulation, a tutorial process in LV 2.5.3. When using DOS, Windows 3.x, or even office applications, there is no problem. But in tank simulation, it failed. More - a CAD I tested it also crashed!
My initial thoughts was another incarnation of an "overspeed" popular in older FIC mainboards with VIA chips (or their clones). I found this problem a few times, it usually starts with crashes during polling DMA controller and difficulties to enter a 386 mode, Windows 3.x, instead of starting, shows logo and returns to DOS, some diagnostic software just hangs. In such situation the system's frequency has to be decreased to the stable level and usually it loses some speed. I decided to investigate it further, but this investigation still required to change the quartz a few times.
I ran a constant FPU test - the crash was there. It was rare, more rare when the case was open, but it was. One every 100 or 150 CheckIt NPU passes, or, much quicker, when the FPU was tortured by simulations in Windows.
This was certainly not an FPU problem as this unit works flawlessly in my 386. Mainboard... I hope not. I tried to blindly substitute various components to check. After I substituted the power supply, the machine started to work without crashes.
Great, another hidden problem with my recovered PSU?
I re-connected the old PSU, started the machine - no crashes.
WHAT? bad connector?
Wait... I can't hear something. I forgot to connect this big 12V fan blowing the air into the PC. I re-connected it, closed the casing, simulation runs and the reactor is pulsating on the screen... CRASH!

So new suspicion: The fan causes RF interferences which cause FPU to crash. More experiments:
- A thick, grounded metal shielding between fan and the mainboard: No crash
- Another grounded shield but with small holes, not influencing RF shielding capabilities: Crashes!
What is this FPU doing anyway during crash? I found it: It wants to transfer while reporting an interrupt. Totally by itself. It wants to throw its stacks* into the CPU when doing calculation, when it's busy or when it's being loaded with numbers. Randomly. Like... like something else activates it.
I finally found the problem by seriously underclocking the mainboard and putting the logic analyzer into CPU/FPU pins: Designers of these FPUs knew that they are running hot. So they decided to make it cool better by making its pins longer, so there's about 1mm of air between the socket and the FPU's ceramics (it is also easier to get the logic probe in there). Being surrounded by air made it run a lot cooler. However, nobody predicted that to trim costs, engineers who designed the mainboard used a socket made of plastic which holds a bit of static electricity. If you look at the 387 pinout and "blow an air" thru the upper-left edge (looking from top), most pins are safely shielded by neighbourhood of power-related pins. The "risky angle" has an ERROR pin which trips an interrupt, the READY 0 pin, and the PEREQ pin used in I/O, which although has its power-related companion, it also has a block of charged plastic on the other side.

I cut a strip of an insulation tape, wrapped it around the socket blocking the hole which gathered static electricity with a significant help of the air from a 12V fan, started the computer with the fan on. No more crashes.

So now I have an industrial 386 PC. No idea what will I do with it, but an interesting unit.

* In this Intel architecture, as the NPU is a separate, external chip, it could not be interfaced with the CPU like fast, internal registers are, so its registers were available as a special stack which was pushed and popped from the CPU using special instructions. These instructions are still in the instruction set in modern 64-bit multi-core CPUs although FPUs are internal since mid-486s.
 
Back
Top