#0029: Dev-blog #001: plans and preparations (‘Remote PI’)

#0029: Dev-blog #001: plans and preparations (‘Remote PI’)

Preamble

I wanted to create something of a diary to collate my thoughts, experiences, and general progression towards completing a large multimedia project. One with a significantly wider time-scale and scope of disciplines than I am accustomed to. It will be a multi-session project that will require several months to assemble the knowledge and materials, necessary to ultimately produce a playable video game demo. The working title for this project will be “Remote PI” or “R-PI” for short. Not to be confused with “RPi” (Raspberry Pi).

This project will require creating a proof of concept video game demo as a solo developer. By ‘proof of concept’, I mean a vertical slice of gameplay that will feature all the core gameplay mechanics layered atop each other in a cogent manner to form a functional and hopefully compelling system. The demo will also require thematic art and music, as well as featuring a narrative hook designed to entice players to support the production of the full game.

Essentially I plan on documenting the creation of a playable teaser trailer here. In addition to writing about the development of the demo itself, I will also document my personal relevant skill progression. Since this project will require me to become practiced at all the disciplines that are needed, for realising an interactive multimedia product like a game; I will need to acquire passable skill in art, music, as well as brush up on my general programming fundamentals. During this process I will no doubt have to also learn a few new tools (IDEs, programming languages, etcetera); and that’s not even to mention the more mundane skill-sets like script writing, project organisation, and time management.

This series of post entries will journal my progress in this endeavour.

My current skill-set (or lack thereof)

Before we go on I think it’s best that I identify to you where I am currently with regards to my skill-set. This is in order to understand what I need to work on to realise this vision. At the time of writing this (2021), I have been a hobbyist programmer for a few years now (since 2013-14 I believe). Being a hobbyist I have pursued programming for pleasure primarily.

This however meant that I was largely unguided and unfocused with regards to what I learned and how. This resulted in the collection a more shallow and eclectic experience base, rather than a more guided and structured one (i.e. comprehensive and useful), like the kinds associated with formal education. More aptly it also dictated how long I stuck with things after the initial fun dries up and the laborious hard-work begins. But that’s a more personal failing of mine. I can’t blame the books that I bought, for me not reading them. I mean most of them had pictures and everything.

Anyway, I started with making short text adventures in an IDE called Bloodshed Dev-C++ using the C++ language. On a technical inspection: these games could be boiled down to basically a series of if/else statements, with their function calls nested within another series of if/else statements. If I got fancy, I might even throw in a switch statement here or there. The only one I remember completing and being proud of was called “A little after midnight”.

It’s most notable feature was that it had a rudimentary inventory system that simply fed into the cascade of if/else statements that constituted that game. I vaguely remember codifying the handful of items in the game as individual boolean variables. Example use-case: “if (isGotKey == true) open_door(); else locked_door_dialogue();”, or something to that effect. Like I said it was primitive.

At the time: I remember just wanting to create a game, any game, and have it work. I liked “choose your own adventure” books like “Island of the lizard king” by Ian Livingstone, and the various MSDOS text adventures that I played as a child, all who’s names unfortunately escape me right now; and simply wanted to have a go.

After wetting my feet with text adventures, I transitioned to making flash games using the ECMAscript derivative language Action Script 3. This was on the FlashDevelop IDE. In this time of approximately 3 years I only managed to complete two games. Keyword: ‘complete’. A basic 20 level platformer with godawful hit-detection called “Runaway Units”, and a single room point-and-click adventure called “Last Life: The Blue Key”. In both games I was helped by my friend Kross Drayllih who created the music to Runaway Units and did the majority of the art and all the music for Last Life. However, I did the artwork for the user interface for that game. This will be relevant when I discuss the pixel art of this demo later.

Around this time I started dabbling with modding games. I created a few JSON mods for a community driven game called Cataclysm: Dark Days Ahead. Notables include: a mod that gives early game access to mutagens via (IIRC) an XCOM-esque gene-therapy clinic building, and a more general extra buildings mod called “OA’s additional buildings”. The later of the two mods even got folded into the main game. If you ever find a sex shop, internet cafe, walled park, cruise ship, or ranger’s lookout: well, that might be my work you’re exploring. In addition to CDDA I also created a few simple ship mods for a space logistics game called Endless Space.

After this I fell out of love with making games, and moved onto playing with mini-PCs and microcontrollers. Namely, Raspberry Pis and (clone) Arduino boards. I wanted to make robots. With these I was introduced to Linux based operating systems, specifically Rasbian. Which I accessed remotely over WIFI (via secure shell protocol) using a program named Putty on my Windows 7 machine.

I remember using bash as a remotely accessible text user interface to run custom bash scripts and programs written in Python 2. These programs were for controlling the RPi’s GPIO (general purpose input output) pins. Which in turn controlled peripheral components like sensors, lights, relays, and motors. These programs were very utilitarian in nature and simple, as they were merely concerned with converting button presses into signal outputs, or interpreting signal inputs from the sensory peripherals and converting them into a textual output for the console. The RPI’s GPIO library was the one who really did the heavy lifting there. Similar story with the Arduino IDE. My instruction sets where pretty basic there too.

As you probably have put together, I am just a hobbyist programmer. I’ve read a few books, did a few online courses, and played around with a few tools; including everything from complete development environments like the Unity engine, to simple graphics libraries like SMFL, SDL, and Allegro. But never to a serious extent. I also have more general knowledge about programming. For example: programming paradigms like functional programming, versus procedural programming, versus object orientated programming. But since all of my projects have either been small enough that I didn’t really need to research proper code organisation for creating a maintainable codebase, or that the project was so large that it has been abandoned for other reasons before necessitating an ordered big-picture view approach to coding.

As I am now, I am even rusty at the basic programming level I once had. This is due to my interests moving on once again. I’m not sure when exactly it happened, but as I started working and acquiring money: my interests gradually drifted towards the hardware side. As I am now I am more versed in repairing devices like power-supplies and old games consoles, than I am programming using a graphics library like SDL2 (Simple Direct-media Layer), in order to do something simple like create a window and render an image onto it.

You might have also sussed out from it’s absence of mention in the above summary, that I am not an artist. Although I have dabbled with some watercolours during my poetry writing teenage phase. I even had a Deviant-art account (“night-eater”) that I used to host the handful of halfway decent things that I did managed to create at the time. But it didn’t stick. As for music, as I am writing this I don’t even understand basic music theory. For example what the notes mean: like A# or B flat. No idea. It’s embarrassing to write this down but it is also the truth.

And that’s my starting point here. A rusty ass second-rate programmer, who can barely art, and can’t music. Still though I think that this project is within my projected ability to complete. It’s like that chess adage: “the only way to get better, is by playing a better opponent”. The same I think it is with creating and refining a skill-set. It needs a specific objective or challenge to be measured against. Otherwise its easy to just end up drifting around aimlessly without ever feeling the need to work hard and develop the skills that have been acquired, at least not to a point where they can bare tangible fruit.

I know I said otherwise in the preamble above, however I do think that the scope of this project is actually relatively small (compared to what it could be). It’s just a short demo; and whose music and art only need to be functional, they don’t need to be masterpieces. Still, lets not risk falling for the Dunning-Kruger effect and underestimating the energy and time taken to develop the relevant skills. That’s a lesson I learned the hard way when making LL:TBK, where everything took three times as long to get done as initially predicted. All in all though, I do think this is doable for me.

Game Outline

Without any further ado lets outline the game that this demo will come from. Please note I will go into much further detail on the game’s mechanical substance during it’s dedicated article. This is just the declaration of the initial parameters that I wish to work within.

Game Specifications:

Working title: “Remote PI”
Genre (mechanics): (primary) point-and-click adventure, (secondary) hacking simulator
Additional mechanics: puzzle mini-games, rouge-like (permadeath and multi-run unlocks), survival (resource management)
Genre (narrative): detective thriller
Art style: medium-low resolution pixel art
Music: low key techno synths (i.e “electronic music”), or something closer to chip-tunes
Playtime (demo version): approximately 15-30 minutes
Playtime (full version): around 1 hour per complete run
Technology (for game): C++ and SDL2 using Code::Blocks IDE
Technology (for demo):
HTML, CSS, JS, and a simple text editor like Xed
Target platform (game): personal computer (Windows, Linux, Mac)
Target platform (demo): web browsers (specifically my website)

Synopsis:

Remote PI is a game in which you play as a private investigator working in a particularly seedy part of (an alternate history) London in 1999. It will have a gig type gameplay loop where the player is offered several cases via email. These discrete cases are then shown to contain an over arching narrative. One that escalates the stakes by tying the the jobs to a central story about national security.

Thoughts on game ideas

You may be wondering why I am just listing out my game’s premise here for something that one day I’d very much like to turn into a real commercial product and sell? Why I am revealing how this sausage is going to be made, secret family recipe in all? Well its because I don’t value ideas (and thus “idea guys”) very highly. They’re not something to be jealously guarded like a dragon on a pile of gold (at least not at this level). I mean I’d be willing to bet that you reading this could probably come up with a better idea for a video game. For example: Pacman but sexy. Boom! Million dollar idea right there. You just thought up Ms Pacman. Genius.

The idea of a detective noir, point-and-click/hacking-sim thriller that is set in late 90’s London is not unique or special. It’s just a disparate amalgamation of various things I like (and am familiar with) that I think will work well together. It’s the execution of the plan that dictates whether or not this product will be worth anyone’s time. Not the premise and promise provided by a “good idea”.

Thoughts on developer teams

You may have been wondering why I don’t team up with other people for these types of larger projects? I mean many hands make light work, after all. Well, in my opinion its more often than not the opposite case of too many chefs spoiling the broth.

This is especially true in cases such as where a group of friends decide to work together. Typically having vague workload expectations, job roles, schedules, and naturally differing creative visions for the final product. In such situations, I expect people to essentially waste their time and energy before the inevitable fruitless dissolution of the project. Also likely with some hurt feelings incurred in the process.

To give you a more personal and direct answer: I simply don’t like working with others on creative endeavours like video games. Especially in smaller more intimate teams, where each individual has significant influence when it comes to whether or not the project is ever actually completed. The idea of expending myself: pouring serious time and energy into a project, only for it to still fail to finish due to someone else, either not pulling their weight or spitefully sabotaging it for some interpersonal gripe — actually genuinely frightens me. This is because It’d leave me in a situation where I can’t get that time back, and I’d also have nothing to show for it.

In the case of shared revenue projects (i.e. a project where money only comes in after it is completed, if at all): people tend to start behaving oddly as the project progresses and the initial new project enthusiasm drops off. I find it is at this time that people begin to gripe about things like: creative control, division of labour, maintaining personal morale, as well as time keeping, and deadlines.

Oh and lets not forget people’s general trouble with listening to basic instructions and specifications. And quite frankly when I have worked with “creative types”, I find that I quickly can become frustrated with the development process, and risk factors associated with co-ordinating various people who say that they are invested in the completion of the project, but whose actions say otherwise. I find co-ordinating with these types of people to be a generally draining experience, closer to an exercise in herding cats than co-ordinating with professionals.

This feeling is exacerbated when these people then choose to organise themselves into flat leader-less structures. I believe this is due to the incorrect assumption that such a small group will not need a leader to organise and co-ordinate the membership, especially when they can all join the same chat group and co-ordinate that way. Like a group of friends might do for example. This type of headless group structure is generally bad unless everyone in the group genuinely holds themselves responsible for making their contributions on time and on par. Even with the absence of the downward pressure and authoritative structure a clear leader would offer.

For example: I have had experiences with creative partners who would only work on things as they feel like it. On one hand I understand creative desire and that sometimes it can dry up. However when working to deadlines it really can become frustrating, especially when they hold up the supply lines by making others wait on them for materials. And since no-one is currently paying them for their contributions, they don’t take their responsibility to the group seriously and prioritise it within the routine of their lives appropriately.

I once had a partner who decided to create a superfluous website and start writing a script for a sequel to the title we were working on at the time. This was at a time when the actual current title was about halfway done, and I was waiting on them for materials. That’s got on my nerves, and the worst part is that I had to find the nicest way to ask the person to go back to making what we actually need; rather than what the person felt like doing. I was also acutely aware of the real chance that my criticism my disenfranchise the person into quitting all together, if I happen to upset them. In which case that project is dead in the water. That tiptoeing around people’s feelings is honestly exhausting.

I could gas on about this, but it ultimately comes down to me not wanting to work with others for this type of thing. Things just have a habit of getting complicated when working on creative (and potentially commercial) endeavours with others. Who owns what and how much is also a headache of a conversation (argument) to have, especially when the group can end up fighting over scraps or (fantastical) projected earnings.

That’s as far my experience with shared revenue type deals go. I have looked at alternatives such as hiring artists and musicians. However I don’t really want to work with freelancers I meet online. I may for discrete commissions of work, such as for character profile pictures or wallpapers for a game. However I don’t really want to get into in more extended business relationship with freelances if I can avoid it. As I fear being nickel-and-dimed for every alteration or modification I may request.

I can’t say I’d blame them for having a mercenary attitude in this case either. They make their money during the development process, and strictly in exchange for their work. It’s not like I’d be willing to share revenue or copyrights of the finished game after-all. So the only way they make money is by charging for everything that they do; including time working on alterations.

Additionally, I am not in position in my life right now where I can invest the time necessary to source and vet good contractors; research contract and copyright law to the point of competency, as I want to legally own the commissioned work; and finally (and most importantly) cough of the dough to pay for all this. So its all academic at the end of the day.

Closing thoughts

As I write this I ask myself: What is the purpose of this blog? Given a moment to think – I believe it’s main purpose is as a public declaration of intent. (Not that there’s anyone actually reading this mind you.) I have had many similar projects in the past, one’s that I have quietly started, worked on for a couple of months, then just as quietly abandoned them. I always justified the abandonment with one reason or another. I am sure that at the time, they were good reasons and not just excuses. However I can not deny a certain emergent pattern of behaviour of mine: I have started many projects but only really have ever completed a small handful. And all the effort that went into those unfinished works is largely lost, not having paid me back any sort of tangible dividends.

The only exception is probably some skill building experience acquired whilst creating and prototyping new systems and mechanics. I have many unfinished games that have their core mechanics articulated to satisfaction but not fleshed out with actual game content materials. Like a functioning inventory system filled with placeholder articles, and having all it’s item population and depopulation event calls coming from one central controller function. So that I could test and trigger the events at will. (Needless to say: this event controller function is to be removed once the system is placed into an actual game, and has all it’s event calls tied to in-game trigger events.)

Additionally, I have created systems like dialogue trees, local saving and loading, and 2D weather effects. Experience modelling these mechanics does in my opinion carry over. Even when tools like engines and languages change, understanding the fundamental principals of how something like saving a game state to file works, and actually having an instance of implementing it, is valuable in my opinion. Although nothing beats the grim satisfaction of actually finishing a fucking project.

Anyhow, here’s to this thing. *downs an alcoholic beverage* burp… cheers.

Thanks for letting me ramble.

#0028: Game Boy Advance SP audio/power port analysis

#0028: Game Boy Advance SP audio/power port analysis

Preamble

This article consists of various labelled pinout diagrams. They specifically feature: the charge port, and accompanying plugs, of the Nintendo Game Boy Advance SP (GBA-SP) portable games console. These diagrams will also include annotations on various notable details regarding these pins and their functionality. Additionally I will also feature some of my personal commentary on the port in general.

It should be noted that the information gathered for these diagrams is collected first hand, without the use of any official reference materials. As such I can only discuss the functions of the various pins that I have personally identified and mapped out. Whether or not this port or any pins within have any additional functionality beyond this is unknown to me. Since I have only identified this port as being used for either power ingress, or audio output: I will henceforth reference it as the “audio/power port”.

GBA-SP

Note: I feature this image set in order to establish a basic reference for the GBA-SP: in the case that the reader is not familiar with this device. The GBA-SP only has two ports on it. These are the audio/power port (on the left of the images), and the COMMS (or communications) port (on the right). This article only features details on the audio/power port.

Notables:

  • The audio/power port has six pins within it. Four on the under side of the plastic support, and two above it.
  • The port also has a retaining spring that looks like a pin. This clip holds any inserted plugs in place. It is located between the two top pins, on the centre part of the plastic support, that juts out toward the inner wall of the socket.

GBA-SP charger and plug pinout

Notables:

  • There is a pinout diagram (or legend) of the charger’s plug on the charger’s plastic housing.
  • Despite the unique plug, the GBA-SP actually uses a very basic AC-DC power-supply that provides 5.2 volts DC @ 320mA.
  • 5.4 VDC is the charger’s measured open circuit output voltage. I assume it drops to ~5.2V once loaded.
  • The output power (both voltage and ampere) is within/around the USB standard. Nintendo could have arguably used a standard mini-USB port at the time (2002) to power the device instead.

GBA-SP audio cable plug pinout

Notables:

  • It is keyed for stereo sound, having two different audio channels that then share a return line.
  • The audio ground (or return, or drain) is not electrically connected to the device ground.
  • When inserted, the plug shorts the audio switch pin to ground
  • The only pin missing from the audio plug is the pin that corresponds the device’s V+ inlet pin.
  • Dedicated article: #0025: Modifying a pair of GBA-SP earphones into an aux audio dongle

GBA-SP audio/power port pinout

Notables:

  • Pin: Audio channel (right): carries the positive signal for the right channel (of stereo audio).
  • Pin: Audio channel (left): carries the positive signal for the left channel (of stereo audio).
  • Audio ground: functions as a return for both the right and left audio channels.
  • The GND pin, as well as the metal sheath of both the audio/power port and the adjacent communication port are all electrically connected.
  • The Audio switch pin has a floating voltage of 0.5 volts.
  • To activate the Audio switch: tie it to GND.
  • Pin: V+ is for the 5.2 VDC input from the charger.

Testing the audio switch on the GBA-SP

control test with an audio plug
test by manually shorting the audio pin

System freeze demonstration

While I was recording the testing of the audio/power port on the GBA-SP I came across a system freeze. Initially I placed it here because I thought it might be relevant to the audio/power port in some capacity. However after I had some time to think about what might have caused this system freeze, I have come to the conclusion that in all likelihood this freeze was caused by me putting pressure on the game cartridge as I inserted the audio plug into the console.

This likely then caused the cartridge to move slightly, but enough to break continuity between it’s pads and the console’s pins. Perhaps one or more of the GBA-SP’s pins moved onto a more insulated or corroded section of the cartridge’s pad(s). A section that is insulative enough that it either blocked or damaged the signal integrity beyond interpretation.

The main reason why I think this is the case, is because the audio/power port doesn’t deal with any data outside of audio signals. Certainly nothing that could cause a system freeze in my opinion. However what has caused multiple freezes in the past is tampering with the game cartridge while it is powered and in use.

Thoughts on Nintendo’s anti-consumer product design

In the previous GBA-SP dongle article I went on something of a rant on Nintendo’s anti-consumer design with regards to this particular product. In order to avoid rehashing those same points, I’ll keep my thoughts here concise, and offer them more as an addendum to that gassy rant.

To cut to the point. Yes I still think that the removal of the 3.5mm audio jack during the design iteration from the GBA to the GBA-SP was an anti-consumer gesture. Additionally I think this unique GBA-SP plug and socket design is woefully unnecessary; at least from a technical perspective.

As far as I can tell: Nintendo simply mashed together the functionality of the generic 3.5mm audio jack, and of the standard Mini-USB connector available at the time (~2002). They blended these two standards into their own bespoke plug and socket design. A proprietary design in which they can control the availability and price of. At least for the critical time period after the public product release, where there’d be the highest demand for accessories like this. Accessories, that they could then price gouge their customers on, with no competition (i.e. no legitimate alternatives).

The reason why I believe this to be the case, is that without the motivator of maximising profits: this design decision of creating proprietary alternative designs for already existing standard open designs makes little sense. Let us consider that if instead of this (immediate) profits driven motivator, the main motivator was to create a versatile and endearing product. One that will be usable long into the future due to the sheer availability of parts, and supporting accessories. Such as USB related componentry.

If they really wanted to make the best product they could for their customers: then I believe there is little reason not to use a Mini-USB port to power the device, and a 3.5mm audio socket for sound. This is especially evident due to the fact that the Mini-USB standard could already satisfy the GBA-SP’s power requirements of 5.2 volts at 300 milliamperes. Perhaps there were some licencing issues with regards to that idea that convinced them otherwise. It may even be the relative fragility of the Mini-USB socket that convinced them not to use it. I do believe that Nintendo’s proprietary port is more rugged than the Mini-USB port. I’ll give them that. I will also say that this is also one of the few instances where a “think of the children” argument may actually have some merit. Kids are generally destructive with toys. However I doubt that was the motivator here, at least not the main one.

Closing thoughts

I wanted to create this article initially for referential purposes, if not just for the sake of completeness. Prior to this, I wrote an article on creating a GBA-SP audio cable. This prior article featured a pinout diagram of this same port’s respective plug (audio version). However this diagram only featured labels relevant to the plug’s audio cable.

I didn’t even compare this information to their counterpart pins on the GBA-SP (or the charger’s plug). This is because I did not need to in order to achieve the stated goal of creating an audio adapter. If I did compare the pins, I would’ve found out that the lower “closed loop switch” pin (as I put it): is actually the main ground pin; and that “closing the loop” actually meant pulling the 0.5 volts from the top pin to ground. Although its essentially two different ways of saying the same thing: the latter method gives a more informed picture of what is actually going on. That is all this article is really for at the end of the day: to get a better idea of how that particular port works by using first hand experimentation and some deductive reasoning.

Anyway, I hope this article proves itself useful to you.

Thanks for reading.

Links, references, and further reading

https://www.tinkerersblog.net/0025-modifying-a-pair-of-game-boy-advance-sp-earphones-into-an-auxiliary-audio-dongle/
https://en.wikipedia.org/wiki/USB_hardware#Mini_connectors
https://en.wikipedia.org/wiki/Game_Boy_Advance_SP

#0025: Modifying a pair of Game Boy Advance SP earphones into an auxiliary audio dongle

#0025: Modifying a pair of Game Boy Advance SP earphones into an auxiliary audio dongle

Preamble

This article will consist of a basic tutorial on how to create a Nintendo Game Boy Advance SP (GBA-SP) audio dongle using a broken third party pair of GBA-SP earphones. Additionally I will also provide some related commentary (ramblings) on the similarities between Apple and Nintendo; particularly the way they design their products, and the way that their fanbases receive them. So if you have any old earphones you got as a child and broke yet kept, or maybe even recently purchased as spares and repair? Or if you are inclined to hear me bemoan tribal consumers and corporate avarice. Well here you are.

Creating an audio dongle

The actual conversion is rather simple. You just need to first cut the earphones off; then connect the wires as shown in the pinout and wiring diagram below.

Pinout

Audio jack
1: left speaker positive
2: right speaker positive
3: common ground

GBA-SP port
1: right speaker positive (red wire)
2: closed loop switch
3: (pin absent)
4: left speaker positive (blue wire)
5: common ground
6: closed loop switch

Now that we have the broad methodology of what to do to create an audio dongle, I’d like to talk about a few specifics.

Closed loop switch

In the pinout diagram I labelled pins 2 and 6 as “closed loop switch”. What I mean by this is that there is continuity between these two pins. This means that they are electrically connected to each other. I believe they are configured in this way in order to act as a switch when the plug is inserted into the device.

The electrical connection between the two pins effectively closes an open loop within the device. One that terminates with these pins’ respective sockets. This loop is probably used so that the device can know when an audio peripheral has been connected. This is so that it can act accordingly, by for example switching off it’s built in speaker.

Where to cut the donor earphones cord?

This might seem like a rather simple question at first. However in order to answer it, I needed to answer a few other questions before knowing where exactly I wanted to make the cut. The most important question that needed answering is does the pair of earphones actually work properly, or are they broken somewhere.

Assuming that they have at least one fault somewhere within them, where is the fault? If you can not easily identify it, yet the earphones are still not outputting sound. Then perhaps the fault is hidden. In this case, it will mostly likely be either at the earphones themselves due to snag damage; or if you are unfortunate, it’ll be located near the plug due to something akin to repeated flex damage. Please note that I am just speculating from my experience with repairing headphones.

Once the fault is found, then you must make a decision. Repair the fault, or cut if off (if applicable). In my case the fault was at the left earphone itself. I didn’t probe further than identifying roughly where it was, since I had no intention of repairing something that far down stream. I did however consider whether or not I wanted to retain the inline volume dial. After some consideration I decided to remove it. The reason for this is that I feared that the relatively low quality of the componentry involved; such as the potentiometer, or the PCB and it’s solder joints may actually negatively affect sound quality. So I just snipped it off. Didn’t like it much anyway. It didn’t feel nice to use.

What type of plug or socket to terminate the cord with?

This question was primarily answered by the materials I had available at the time. I did not have an appropriate female 3.5mm audio socket available. However I did have plenty of male 3.5mm jacks on hand; including ones that were corded. In the end I went with a jack that was colour matched (black) and that had the smallest profile.

This male jack enabled me to plug the GBA-SP into an auxiliary port on a sound system should I wish to do so. Additionally when coupled with a female-to-female 3.5mm audio adapter, it enabled me to use headphones or speakers with the dongle. This setup basically gave me the same functionality as having an adapter that terminated in a female 3.5mm socket, paired with a typical male-to-male auxiliary cord.

Soldering the jack

When it comes to soldering audio jacks like these: the first actual thing I did was prepare the heat-shrink tubing for it. Selecting the right sizes and cutting them to length. I prepared two pieces, which I thought was sufficient at the time; however in hindsight I should have prepared three distinct pieces. One to isolate each line.

As it is, it has one to insulate the central shaft from the surrounding ground pad, and one to act as an outer cover; protecting all three wires and acting as a general guard against flex damage for the entire cord. It’s good enough, but it would be better in my opinion if the inner two wires were separated by more than just the enamel coating of the wire strands themselves, as I have left them. A smaller gauge piece of heat-shrink tubing on the inner terminal to cover it’s solder joint would’ve been better.

As for the soldering itself: audio jack terminals like the one pictured can be rather tricky to wire up and solder properly. The reason for this is due to a range of factors. Factors such as: the general fiddliness and fragility of the enamel wires themselves. Although more-so the close proximity of the jack’s terminals to each other, coupled with the convex curve and orientation of their soldering pads, is what adds difficulty; as the awkward angles involved can diminish dexterity.

Additionally, the presence of structural plastic insulation between the terminals, meant that a lower heat and a shorter soldering dwell time was needed. This in order not to damage the jack’s plastics with radiant heat from the work area. Otherwise the plastic will melt and warp the plug’s general shape and structure. All these various factors can make it difficult to solder in a reliable and repeatable manner. However practice and work flow optimisations will mitigate these type of annoyances as one gains experience in this task.

An example in which I optimised the process: was by preparing the wires for soldering by removing their enamel insulation. This is because prior to this: during soldering, the enamel coating on the wires sometimes wouldn’t burn off within the liquid solder blob itself; especially with the necessary (relatively) low heat and short dwell time. When this happened, it resulted in the wire not forming a good electrical connection and/or not bonding physically with it’s solder pad.

I chose to prep the wires by burning off a segment of their enamel coating using a lighter. This had to be done in very quick manner in order to not oxidise the underlying copper strands too much. Burning off the insulation in this manner allows me to quickly solder the wires into place without worrying about any complications from the insulation.

After removing a segment of insulation in this manner, I chose to attach the wires in a way that limited any exposed segments of wire present outside of the solder joint. This is to limit any exposed conductors. Consequently, the solder joints were close to their respective wires’ insulated ends, and only used the exposed segments to get a good electrical connection within the solder joint itself. After-which I’d snip off any excess exposed wire that preceded the joint.

Testing the cable

The attentive readers amongst you probably have noticed that my repair notes contain several resistance tests of the various lines. Most I ran while working on the device, those are the numbers closer to the hand-drawn diagram. Some of which have been struck out. Discount those. The ones of interest are at the bottom of the notes. Those are the results from the post repair test.

The reason for the final test was because I was dubious of the quality of the cables that I was working with. As well as generally dubious of audio cables of this calibre. Specifically, cables that consist of a small collection of loose strands dipped in (I believe) enamel for insulation; then interwoven with additional plastic or nylon strands for strength. They all look and feel fragile and cheap. Having said that however, I should say that a post repair test is a good general practice. Even when confidence in the repair is high.

As you can see the left speaker line has a end-to-end resistance of 10 ohms. Five times that of the right speaker line, and ten times that of the common return (or ground) line. The right and return lines have acceptable resistances in general, and accurate relative resistances to each other. I expected the return common line to have half the resistance due to the doubling of the lines. However, what was unexpected was that the left line was clearly an outlier in line resistance. This in my opinion is due to either the low quality of the cable in general, or a hidden defect I did not find.

It’s not ideal, but upon testing with actual sound, the loss of volume on the left line speaker due to it’s higher line resistance was not noticeable at all. So I just left it be. The effort necessary to track the fault that is adding the 8 ohms to the line, is not worth the reward of having perfectly balanced lines for a GBA-SP’s audio. I used to call it laziness not ploughing down these types of rabbit holes. However as I have aged, I have come to understand the diminishing returns on investments that this type of perfectionism offers.

Completed mod demonstration

Related thoughts on Nintendo and their Game Boy Advance SP console

Now that we have created our own DIY audio dongle, let’s talk about why we needed to do this in the first place. In other words, why the Game Boy Advance SP doesn’t have a built-in 3.5mm audio port to begin with. In order to get at this answer, let’s first discuss a completely different technology company and it’s products. As to why, I’ll let you join the dots.

Many people today (2021) credit Apple as one of the most anti-consumer consumer technology companies, specifically with regards to their product design. Although there are numerous examples I could pick out, the one relevant instance here: is the removal of the generic 3.5mm audio jack from their 2016 iPhone 7 models. Anyone who pays any critical attention to this company probably came to a similar conclusion to my own. (Proceeds to pat self on back.) This naturally being that they did so in a bid to to sell first party audio peripherals at a premium. This being to their captive audience of fruity cultists. Cultists that would happily eat that up.

Why am I mentioning this in a Nintendo article? Well it’s because peoples’ memory is generally fickle and often mired with nostalgia; and the residual emotional attachments that it incurs. This leads them to holding double-standards when it comes specifically to childhood brands like Nintendo, often holding them to a lower standard of conduct than brands like Apple. These same people forget that their friend Nintendo did the same thing 13 years prior in 2003 with the incremental release of the Nintendo Game Boy Advance Special (GBA-SP) portable games console.

A games console that had no tangible advantages over it’s Game Boy Advance (GBA) predecessor other than a few quality of life (QoL) improvements. Both consoles played exactly the same games, however the SP boasted: an internal rechargeable lithium-ion battery, and an LCD backlight. For consumers tired of repeatedly buying new AA batteries for their GBA, or always awkwardly angling the unlit LCD towards a light-source whilst avoiding glare; these were improvements worth investment. Those of you who can read between the lines, might’ve guessed that this internal battery naturally required a specific Nintendo battery charger. A theme that they continued in later products such as with the Nintendo Dual Screen portable console (NDS).

However, a more apt feature of criticism in the iteration from the GBA to the GBA-SP, is the removal of the 3.5mm audio jack. Why did they do this you may ask? Well, now I could be wrong, but the cynic in me says that it was to facilitate Nintendo selling official audio peripherals at a premium, to their captive audience of pedantic neck-beards in waiting. That’s us mate.

Laughably, Nintendo’s official response against their audience’s pushback in 2003 was basically the same as Apple’s in 2016. They both said something to the tune of: that the new device simply didn’t have the space for a 3.5mm audio jack. Apple added some device waterproofing claims to this as well. But the core reason was the same: that there’s simply no space for it. Now shut up and buy our official peripherals. Peripherals that use the same port for both audio output and power delivery. So good luck using wired headphones and charging the device at the same time. Enjoy.

To cut it short. My point is that Nintendo has proven themselves to be as anti-consumer as Apple when the mood takes them. However it saddens me that their customers are prone to look at this company through rose tinted spectacles. Often even shouting down valid criticism, yet many within the community still consider themselves distinctly different from the stock of Apple enthusiasts.

That’s what happens when one thinks with their feelings. It’s tribal fanboy-ism at it’s finest. People for whatever reason forget that an individual’s relationship with a company or business like Apple or Nintendo, is strictly transactional. Nothing more. They are not your friends. A corporation does not have the capacity for camaraderie, or loyalty. Only the capacity to take advantage of such feelings in order to sell more to the same people.

Obviously, I am not talking about the entire consumer base here, just the vocal fanatics that seem to dominate public discourse. If anything a logical or reasonable person who likes the products of a particular brand to the point of becoming brand loyal; should ideally, be even more critical (than the average Joe) of their chosen company when it strays into anti-consumer practices. Due to their investment within the brand and it’s products. They likely would wish for them to stay good, more than a person who isn’t all that invested. But that’s not the world we live in. Instead the more invested a person is in a brand, it seems the more likely they are to tribally defend them regardless of circumstance. It’s sad really.

Closing thoughts

I know what you might be thinking, this article is nice and all, but it’s also almost twenty years too late. I mean in previous years getting a hold of an audio dongle for the GBA-SP might have been troublesome or expensive. Back when (the famously litigious) Nintendo were still protective of the console. However in 2021, one could easily purchase a NEW Game Boy Advance SP audio dongle from Ebay for less than a fiver. Since Nintendo doesn’t care much about protecting the rights to peripherals for a console that old (read unprofitable). Sure, the item that you buy won’t be an official Nintendo product, or even a notable third party contemporary brand peripheral, like Competition Pro. But it’ll work. Probably.

example of an unbranded Ebay adapter

To answer that question: Yes, yes you could. You could purchase an unbranded china special peripheral for your almost twenty year old console. Alternatively you could also make use of any old and/or broken first and third party peripherals that you may already have lying around, or even purchased in a mixed joblot or bundle. Essentially converting (basically) e-waste like that into a useful cable. One made to your exact use case and specification no less. Chances are your convert will also be better quality than a bought cable depending on what materials you use to make it.

Mine isn’t, I made mine from a pair of Competition Pro earphones. But still you get my point; I bet if you made yours from a pair of official Nintendo earphones (should you happen to have them), they might be better quality. As for making something for a specific use case: I totally use mine to blast Castlevania: Aria of Sorrow’s soundtrack, via my home sound system. I do it for maximum “immersion” during my midnight gaming sessions. I also want my neighbours to know that I am cool. The banging on the wall seems to indicate that they do.

Thank you for reading.

Links, references, and further reading

https://docpop.org/2016/09/apple-learn-nintendos-headphone-mistake/
https://arstechnica.com/gaming/2016/09/no-headphone-jack-nintendo-did-it-first/
https://en.wikipedia.org/wiki/IPhone_7#Headphone_plug_removal
https://en.wikipedia.org/wiki/Game_Boy_Advance_SP#Headphone_jack

#0022: Equipment recommendation list for a hobbyist repair technician

#0022: Equipment recommendation list for a hobbyist repair technician

behold mein craphouse

Preamble

This is a quick and dirty list of the equipment (tools, and consumables) I use, specifically with regards to repairing devices. Hopefully, this list proves useful to any other hobbyist repair technicians or people interested in electronics in general. The equipment list is split into three categories based on need: Necessities, Nice-to-haves, and Useless dreck. Each item has a quick summary explaining it’s use relative to it’s category. Other than the broad categories, the items are in no particular order.

Quick list

Necessities:

  • Temperature controlled soldering iron
  • Leaded solder
  • Lead-free solder
  • Tweezers
  • Bench power supply
  • A good vacuum desoldering pump
  • Desoldering braid
  • Pry tools
  • Isopropyl alcohol
  • Rosin flux
  • Multi-bit screwdriver set / screwdriver set
  • A cheap multimeter
  • PPE: safety glasses
  • PPE: gloves
  • Spares and parts
  • LCR component tester
  • Side cutter
  • Digital camera
  • Portable computer
  • Helping hands
  • Hot air SMD rework station
  • Kapton tape
  • Shrink wrap
  • Lighter
  • Pen and pad
  • Small containers
  • Work mat
  • Mobile light source
  • Cleaning supplies

Nice-to-haves:

  • Soldering iron tip tinner
  • A good wire stripper
  • Solder mask and UV curing torch
  • Oscilloscope
  • Hot glue gun
  • Soldering gun
  • PCB board holder
  • Precision screwdriver set
  • Desktop fan
  • Filter mask
  • Temperature sensor module
  • Isolation transformer

Useless dreck:

  • Cheap vacuum desoldering pump
  • Cheap wire stripper
  • Flux pens
  • Alcohol based liquid flux
  • Heated vacuum desoldering pump
  • Soldering iron sponge

Necessities

Temperature controlled soldering iron

A variable temperature setting is needed to work effectively with materials with different melting points and thermal mass conductivity.

Leaded solder

More versatile and friendly to work with than the lead-free variant due to it’s lower melting point and better flow. Necessary to perform maintenance on a soldering iron tips (tip tinning).

Lead free solder

If you have leaded solder, then lead free solder is largely redundant if all you primarily care about is solder effectiveness. Lead-free solder does however have it’s use cases. The main trade off between them is that leaded solder is more effective as a solder, however lead-free doesn’t contain lead, which is toxic. Any use case where you definitely do not want lead in the device, lead-free would be the way to go. A good example of this, is any device that comes in contact with foodstuffs such as kitchen appliances.

Tweezers

Tweezers are needed to manipulate tiny components, such as surface mounted components. They are also useful for holding materials affected by heat. Get a firm pair of metal tweezers, the cheap ones bend when you exert force on them, meaning that you lose control on the object you are gripping. It also means that you cannot grip the object tightly, otherwise the tweezer will start to bend. I recommend having multiple tweezers, an L-bend pair of tweezers for comfortably interfacing with SMD components, and a larger (stronger) pair of straight tweezers (with teeth/grips) for general use.

Bench power supply

Necessary for powering a range of devices and components under test. It needs to have variable voltage outputs and a current limiter. It also needs to be able to provide enough power for powering the devices under test.

A good vacuum desoldering pump

Although generally less effective at removing solder from a joint than a length of flux infused desoldering braid would be, it is still very useful due to it’s reusability. It helps me keep my recurring materials cost down.

Desoldering braid

This is probably the best way to actually remove solder from a solder joint. Works best when infused with additional rosin flux.

Pry tools

A small collection of pry tools will assist in opening the various plastic clips that you will encounter when opening consumer devices.

Isopropyl alcohol

An excellent cleaning agent and light solvent. Useful for effectively removing many materials, from adhesive, to rosin flux, and even good for removing water (moisture) from devices.

Rosin flux

Necessary agent for assisting solder to flow effectively. Additional flux is necessary in many cases where the flux that comes within flux core solder is insufficient, or in cases of desoldering a joint without first applying additional (flux core) solder to the joint.

Multi-bit screwdriver set / screwdriver set

A good set of screwdrivers (including security bits) is basically mandatory for a repair tech of any stripe. They facilitate the access and disassembly of devices, necessary for repair.

Cheap multimeter

A multimeter is an absolute necessity. At the most basic level, a multimeter is used to test suspect components to gage their health and functionality. They have many functions that a very useful, such as continuity, voltage, current, and resistance testing. However they also have some gimmicky functions (at lest in the cheaper models), such as NCV testing, or transistor testing (which is not very good on multimeters in general).

Generally cheaper multimeters are fine for low voltage applications, such working on battery operated consumer devices. Their core functions are accurate enough that it shouldn’t become an issue. However if you are wanting to work on higher voltage devices. Such as mains powered devices, than a more expensive notable name brand multimeter (e.g. Fluke) is necessary at that point due to it’s safety feature set.

PPE: Safety glasses

You will use some form of safety glasses sooner or later. The only question is whether it happens before or after something either sharp or hot flies straight into your eyeballs.

PPE: Gloves

Very useful for handling hot materials, and/or isolating your skin form various toxic, corrosive, or abrasive materials. This could include anything from lead metal, to battery acid, to liquid plastic. Get gloves appropriate to the materials you’ll be handling.

Spares and parts

How can you call yourself a repair tech, if you don’t have at least some spare parts or devices either laying around; or stuffed into boxes somewhere. Either bought or salvaged, it really doesn’t matter. What matters is that there are many discrete parts in devices that are virtually irreparable. Basically this includes every small component from passives, such as: resistors, diodes, and capacitors; to active componentry such as integrated circuits and transistors. They’ll all need replacing once they’ve fried.

LCR component tester

This is a good addition to a multimeter. It’s typically used to test various components’ inductance (L), capacitance (C), or resistance (R). I however predominantly use mine to gauge the health of electrolytic capacitors, by testing their equivalent series resistance. I personally bought mine when I got into recapping old monitors. However, you can also us an LCR meter to identify various unlabelled components, such as SMD (surface mounted device) capacitors, resistors, and transistors.

Side cutter

A nice little sharp side cutter is invaluable when it comes to performing various tidying up jobs around a PCB circuit. These little clippers are great for trimming the leads of through hole components, and cutting smaller gage wires that are nestled deep in a device. It also functions as a good as wire stripper, however user’s will have to carefully strip the insulation from cables.

Digital camera

I use a digital camera to document my exploration through a device. That way I have evidence of how it looked before I started messing with it’s insides. An example use case would be documenting which random coloured wires were soldered where. By the time the user finds and fixes a fault within a device, details such as the specific configuration of wires connecting to any given board may slip their mind. So it helps in such circumstance to have documented evidence.

Computer

I typically use my small old (intel atom) laptop computer. I use it to host tutorials (both video and textual), datasheets, schematics, and for use as a typewriter to jot down notes if I don’t want to use a pen and pad for whatever reason. One could also load on the thing various entertainment media for getting through long sessions of laborious work. Basically music and audio books. Additionally, I also use it to store catalogues of the photographs I take when assessing devices.

When it comes to work bench computers, I have a general preference for computers that are inexpensive and that use very little power to operate. Inexpensive, because they are likely to get damaged in one way or another. Either by off-spray, a slip with a blade, a drop, melt damage, anything really. And low power, because the computer is also most likely going to be powered on for extended periods of time, most likely just displaying documents whilst playing music in the background. Essentially, not really doing much in terms of processing computations. So an older small portable with a lower power processor is ideal for this use case.

On the other hand a desktop for example is likely unsuitable for this task, both due to it’s power consumption, and due to the desk space that it will require. Additionally, there is also the temptation with a more powerful rig, to ‘take a short break’ by playing video games, or rabbit holing youtube videos. Such distractions are painful experiences on an intel atom processor, hence its likely to keep a person on task easier.

Helping hands

Helping hands hold workpieces in place securely, enabling the user to work on them confidently. They may initially seem like a ‘nice-to-have’. However I find that for many things, such as soldering wires together, or connecting various cables to plugs; helping hands that can hold all these small fiddly components are exceptionally helpful.

Hot air SMD rework station

An SMD rework station is just a fancy name for hot air station. It has a nozzle that outputs air hot enough to melt solder. If you are working with miniscule surface mounted devices or components, then an SMD rework station is something that you really aught to have. Especially when it comes to installing or removing larger surface mounted devices such as IC (integrated circuit) chips.

Kapton tape

A great companion to a hot air station is the Kapton tape. This is a heat resistant adhesive tape. It is useful in that it allows an operator to localise any heat from the hot air station, by applying the insulative kapton tape to the surrounding componentry. Kapton tape is especially useful in preventing many tiny components from accidentally falling off a PCB when the user applies heat to a large neighbouring component. This happens a lot when dealing with any larger logic ICs, because they tend to be surrounded with many tiny surface mounted ceramic capacitors. Which are needed to provide them with apt power.

Shrink wrap

A great step up from using electrical tape to insulate connections in wires is by using shrink wrap. Shrink wrap is more water resistant and offers a more permanent and professional looking insulation to connections.

Lighter

A lighter is a great cheap alternative to a hot air station or heat gun, when you want to shrink heat shrink.

Pen and pad

Good for taking on the fly notes and sketching schematics, diagrams, or what have you. I think that nothing beats the convenience of using a pen and pad to jot down whatever pops into mind.

Small containers

A couple of small containers on the desk are an absolute must for working continuously in an organised manner. I have several knocking about; including a long metal tray for holding screws, a small pot for holding small garbage like solder from a vacuum pump or wire and tape trimmings, and a glass ashtray for holding various components. It’s good to have several little containers like this with dedicated uses.

Work mat

A good mat is necessary to protect your work table from any damage. I personally use a small cutting mat for everything, including soldering. Although a silicon heat map would be more appropriate for that, but a cutting mat has more general applications. Mats are especially useful for tables with multiple uses, such as writing or drawing. Tables that are better left unscratched and flat.

Mobile light source

Mobile light sources include devices like: torches or desk lamps. These are necessary for seeing small details, such as silkscreen on an IC chip, and especially useful for photography which often requires higher levels of light for the camera to capture details properly.

Cleaning supplies

Every repair will need a good clean at some point. This is a bit of a catch all category for the general cleaning stuff that I use. I keep a fair range of stuff close to hand. Firstly, I have a couple of dirty rags or shop towels, these are for either really dirty devices, or devices that are contaminated with something that means I’ll have to chuck the rag after use. Secondly I have some clean microfibre cloths for wiping down display screens and the like. These are for light dusting and polishing jobs essentially. Thirdly, I have a paintbrush which I use for cleaning dust out of difficult areas on devices, such as from between the fins of a heatsink or from a populated PCB board in general. Essentially for removing the bulk of dust from uneven and crowded surfaces.

I also carry cleaning solutions. In addition to the solvents like isopropyl alcohol, I also carry two spray bottles. One is filled with tap water and the other is filled with a 10:1 tap-water and washing up liquid mix. The dilute washing up liquid, I use as a catch all cleaning agent. Its good as a basic emulsifier, allowing me to remove oils from a device. It is also generally good for removing random sticky stains and substances from a device without damaging it. For example as an initial wet wipe down of a filthy monitor screen. The clean water bottle is used to aid the removal of any sticky residue that may linger after the application of the washing up solution. I keep cleaning with just water until the device chassis (or screen, or whatever) has no residue of any cleaning agent left on it.

Additionally I also use cue tips or earbuds. These are very effective at cleaning in very localised areas. I mostly couple these with some isopropyl alcohol; by soaking the earbud’s head in alcohol it can very effectively remove both caked on dry thermal paste or wet paste from CPUs without leaving any residue or contaminants.

Nice-to-haves

Soldering iron tip tinner

This is a specialised tool that just cleans soldering iron tips. It’s more convenient to use than tinning a soldering iron manually using leaded solder. But the results are basically the same.

A good wire stripper

A good wire stripper is a tool that will quickly and reliably strip insulation from wire. Its a tool of convenience, enabling a user to strip wire in a fraction of the time that it would take to do so with a side cutter or knife.

Solder mask and UV curing torch

If you work a lot with PCBs. For example repairing water damaged PCBs that have violently short-circuited to the point that they incurred burnt out sections. After scraping out all potential conductors such as the burnt out materials. A solder mask paste, is useful for sealing and insulating the damaged sections afterwards. It is what I consider a permanent and professional repair. The accompanying UV torch, assists the solder mask in drying quickly. A hacky alternative to filling blown holes in PCBs with solder mask, would be to use hot glue.

Oscilloscope

Oscilloscopes are useful if you get into analysing and repairing devices that deal with a lot of logic or sound signals. Things like computers and audio amplifiers. Where you’ll need to measure the signal outputs of various ICs in order to track down where the fault lies.

Hot glue gun

This is the hacks best friend. I use it a lot in in prototypes and as a way to make “temporary” repairs to various devices. Its great for filling in gaps in repaired plugs, and chassis, and even for setting electronics into a box.

Soldering gun

A powerful (~200 Watt) soldering gun is useful in any instance where you need a significant jump from the everyday soldering iron. It has the thermal mass and watt output to effectively solder to large heatsinks, such as a metal chassis. Soldering guns are also useful for effectively melting/welding plastics when coupled with a wide tip and low temperature setting.

PCB board holder

Useful for securing a workpiece. It is as useful as the helping hands, but more specialised due to it’s design being specialised for holding PCB boards only.

Precision screwdriver set

If you already have a screwdriver kit or the multi-bits kit you may either encounter screws that are too small for your screwdriver set, or screws that are deeply recessed into a device. The thin channel of the screws recession may be too deep and/or too thin for the larger screwdrivers.

Desktop fan

Its just a fan. It blows the fumes away from your face as you work, and helps cool workpieces down quicker. It’s nice to have when you want it, but in most cases it is unnecessary.

Filter mask

Necessary if you work with any really toxic fumes. I am not talking about rosin flux fumes when I say toxic. I’m referring to using a filter mask when melting/welding plastics.

Temperature sensor module

A largely single use tool that is good for calibrating a temperature controlled soldering iron (which has the function of temperature calibration).

Forceps

This is good for reaching deep into larger devices and clipping to and pulling specific objects around.

Isolation transformer

If you intend to work on any mains powered devices, then an isolation transformer is a must for safety concerns. Its another line in defence between you and death by electricity.

Useless dreck

Cheap vacuum desoldering pump

They don’t generally have the suction necessary to be worth using.

Cheap wire stripper

They tend to cut deeper than the insulation and cut strands within the wire. They are not better than a set of clippers or even a knife. There is no reason to use this type of wire stripper above more general tools.

Flux pens

They tend to contain diluted low quality rosin flux that lost the majority of it’s effectiveness of helping solder flow, in return for being in a true liquid form. Which allows it to wick in the pen. If you want a low quality flux in pen form. This is for you. It may useful for applications of SMD soldering. However it doesn’t make a notable difference over soldering with just flux core solder.

Alcohol based liquid flux

The flux is less effective due to being diluted in alcohol. Its effectiveness is reduced to the point that it doesn’t have a notable difference over using a flux core solder alone. The flux itself however is much easier to apply because it is a liquid. Rather than the pure rosin flux which is an amber like solid, or flux paste. This type of flux tends to be marketed as a no mess or no residue flux, that claim is true. However it is not a very effective flux.

Heated vacuum desoldering pump

The one I have, had a fragile tip that cracked due to the heat and use. It is also a thermoregulated unit; that has no way for the operator to control the actual temperature output. It outputs heat that can easily damage a work piece if held on it too long, at the same time it may not melt the solder in a timely manner. The actual vacuum pump mechanism however is serviceable.

Soldering iron sponge

I generally do not like soldering iron sponges due to the fact that they require watering first, and when you actually use it to clean solder off of the soldering iron, the cold moisture of the sponge causes a sudden thermal loss in the iron. Meaning that the user will have to wait for the iron to reheat after each cleaning. I just find that the iron wool tip cleaners are just superior as they do not require prep to clean the soldering iron, nor do they cause thermal loss in the iron, and finally they even clean the tip better than the sponge does. Tip cleaners can scrape oxidation from the iron’s tip, which the wet sponge can not.

Closing thoughts

I should mention that the categories of tools are based on my particular use cases, skill set, and preferences. Yours may and likely will vary. I have categorised the tools according to my general needs; putting the core list of tools that I use with most projects in ‘necessities’, the specialised tools that I seldom use but enjoy having in ‘nice to haves’; and finally the tools that I either did not enjoy using or had other tools (including general use tools) that did their jobs better, into the ‘useless dreck’.

Just because I categorised the various tools as such does not mean necessary that others would do the same. A lot of it is based on taste and personal priorities as well. The various rosin flux products come to mind as a good example of this. The ones in the ‘useless dreck’ categories are not without merit, it’s just that I did not care for them.

I hope this crude little list is of some value (if not then at least entertaining) to you.

Thank you for reading.

#0019: Creating custom cables for test equipment

#0019: Creating custom cables for test equipment

Preamble

I wanted to write a little on test cables in general, more specifically about the actual quality of the cables available at the lower end of the consumer market. Highlighting the prevalence of these types of cables, including the products that they tend to accompany. I also intend to instruct briefly how the end user can test these cables and how they can create their own superior home-made versions.

Low-end retail cables for test equipment

In my opinion low quality cables are especially evident in instances where the cables come bundled in with many lower-end chinese consumer test devices, as opposed to purchased separately. This is especially true in cases where the product is unbranded. Think cheap test equipment such as: £10 multimeters, or £50 bench power-supplies. For example the probe cables that come with the DT-830 multimeter.

To clarify I am not talking about genuinely dangerous or illegal (according to british safety law) cables, just low quality ones. Things such as chinese power cables that do not comply with the british safety standards – which are genuinely hazardous to the user and not fit for purpose; are outside the scope of this article. Genuinely dangerous cables like that run the risk of being confiscated at customs. I wrote an article on such a cable; it was a non-compliant BS1363. Link below. No, I am specifically talking about cables such as the ones on multimeter probes, and on bench top power-supplies. Inoffensive dreck.

article hyperlink: #0004-dangerous-non-compliant-bs1363-plug

Example of low quality cables bundled with multimeter

What factors dictate a cables quality?

Many times low quality wires will have a noticeable resistance value across them. This is often due to the cost cutting measures of the manufacturers. These include constructing items with lax specifications (quality control), or by saving on materials used. For example by minimising the number of actual strands of the copper conductors present within the cable, or by opting for a cheaper material substitute such as aluminium.

These cables being built to such a restrictive price-point: is what makes them very flimsy, basically disposable in many cases. Many of these types of cables are in my opinion, are merely designed to just tick the “comes with accessories” box in a products’ marketing materials.

This unfortunately makes the cable virtually without genuine use outside of the specific one that it was manufactured for. Often not even that use-case for long, due to their general fragility. So if you have some of these low quality cables in use. It may benefit you to replace them as soon as convenient; as they may be hampering your devices’ ability to perform.

For example, cheaper multimeters such as the previously mentioned DT-830 or the XL830L, are generally rather accurate. Often staying within a less than 2% error deviation from each other. However any variable resistances across their probes’ cables may affect their readings. They may for example: cause a notable voltage drop when in use, or affect the threshold for a continuity test.

A good example of a low quality cable would be: a power-supply cable that I got with my chinese bench-top power-supply. An unbranded QW-MS305D. By the by, it was actually the same unit that came with the non-compliant BS1363 plug. Never-the-less, the power-supply’s cable in question was used to power devices under test with DC voltages; as such they contain a male banana jack on one end and a crocodile clip on the other.

Although it is a relatively cheap power-supply, it could still reliably output it’s rated 30 volts at 5 amps. The only issue with the out-of-box setup (minus the bad plug), was that the output cable heated up and often got soft when exposed to the higher amperages that the power-supply could output. Although it took sometime for this to happen, i.e. it needed continuous output over several minutes. I still judge the cable as unsuitable for purpose. One thing I found humorous after the fact is that the online seller that I bought from had this same accessory packaged with the 10 amp version of this power-supply as well (QW-MS3010D).

Example of low quality cables that came with the power-supply

Using salvaged materials to create custom cables

As a response to the performance of the bought cable, I retired it. I removed the cable ends and attached them to a salvaged mains cable; and it has worked fine since. I really like using salvaged mains cables for these types of applications. Especially ones from UK safety certified devices; and especially ones from heating units. Such as electric room heaters, or toasters, electric grills, kettles, etcetera. Basically anything that uses electricity to generate resistive heat. This is because their cables are specced to allow large amounts of current to pass through them without heating up themselves.

For example: a typical mains oil heater, is rated for 1500 watts. This means that it’s cables need to safely pass that amount of power across them concurrently while the device is in use. When converted to volts and amperes; this means that these cables are able to handle 240 volts AC at 6.25 amps. This leaves me confident that it can safely handle the maximum 5 amps, 30 volts DC of my power-supply over long periods of time.

They do this by having very little resistance across the cable length. This is accomplished by actually putting copper in your copper cables. Although after looking at the example photos that I have, it appears that this particular cable is actually using aluminium strands as conductors.;) However the point stands; there are sufficient conductors within the cable, that the current can pass across it unhindered. I.e. The cable is of a big enough gauge, not to bottleneck the higher currents.

One thing to pay attention to when creating your own cables beyond the quality of the cable itself; is how you connect the various plugs you wish to use to it. This is because a poor connection here can impede the passage of electricity; and add resistance to the line. I suggest firm connections with as much conductive surface area touching as practical. It is also good form to do a resistance test across the entire thing once completed.

Another good source for quality salvaged cabling, is old or damaged ethernet cables. The twisted pairs within work very well in lower voltage DC applications; including carrying signal voltages (like binary data). The pair windings are configured to minimising interference for their carried digital signals after-all.

I like to use them to make home-made breadboard jumper cables. This can be done by just unwinding a length of cabling, cutting to size, then tinning the ends so that they can interface with the breadboard. Will it pretty? probably not. Will it be functional? 100%.

You could also use ethernet cables for replacing a cable between an external DC power-supply (or power-brick) and it’s paired device (e.g. Laptop). I tend to opt to wind together a pair of cables, if I wish to reliably carry current at higher DC voltages (e.g. 20VDC @ 3A for a laptop). However any higher than that and you’d be better served by using thicker gauge wires.

Home-made custom cable for power supply

Example of resistance test used to determine cable quality

Closing thoughts

That’s all really. I just wished to highlight that some low end cables are not good, and to encourage you to create your own superior cables using parts from common household devices.

Thank you for reading.

#0018: Creating and utilising QR Codes

#0018: Creating and utilising QR Codes

image of a QR code

What is a QR code?

QR codes are a type of barcode. Barcodes are a visual representation of digital (or binary) information. They are designed to be easily understandable by machines. Barcodes enable machines to do useful operations that involve interacting with the physical objects, that the barcodes are placed on. Such as sorting or counting large volumes of items accurately. For example, with packages at a mail depot, or product inventory at an automated warehouse or factory.

A QR code (or Quick Response Code), is a type of 2 dimensional barcode, otherwise known as a matrix barcode. All this means is that it represents it’s binary information visually across two axis (x and y). It does this by plotting black (1) and white (0) squares on a grid. Matrix barcodes are an evolution on the iconic one dimensional barcodes; which represent their binary information in a single array of black lines and white spaces (i.e. columns), that denote their ones and zeros respectively.

It should be noted that there are numerous different types of barcodes (both 1D and 2D) in use today. Each one is specialised to their specific applications. These specialisations manifest themselves with variations in visual design (e.g. with markers for orienting scanners with different protocols); barcode size, reflecting how much data they need to represent/encode; and data encoding ability; i.e. what type of data the barcode image represents (typically: numbers, or ASCII symbols).

The most obvious difference between one dimensional (array) and two dimensional (matrix) barcodes, is the addition of a Y dimension of information. This addition allows for a greater density of information to be stored, however it also requires more sophisticated tooling to actually read the data from the barcodes themselves. The most notable hardware difference in this regard is that one dimensional barcodes use a simple laser line scanner, whereas matrix barcodes require a camera module. Because of this, you typically can not read any matrix barcodes with hardware designed for 1D barcodes, however in many cases (providing that the software allows for it), you can use a matrix barcode scanner (e.g. smart phone) to read information from 1D barcodes.

Additionally, I make assumption that on a barcode: black denotes a one in binary and white a zero. Whereas in reality, it really doesn’t matter. This is because the interpretation of the barcode is all up to the protocol standard that it is using. For example with the case of a UPC-A type barcode, where it uses a 7 bit array to denote numbers. Different value bit arrays can symbolise the same (base 10) number depending on it’s location on the barcode.

image of a UPC-A barcode
UPC-A barcode image taken from wikipedia.org
table taken from wikipedia.org
Example of a 1D barcode in use as store’s inventory identifier

Consumer uses for QR Codes

I’ll limit this discussion to consumer use cases and applications because industrial applications are rather dry. They use QR codes in the same way they use other barcodes. Which is to orientate machines that operate with and around physical goods. This could include use cases such as at an Amazon sorting depot, barcodes are used to inform the sorting machines of what goods are in what shelves.

Where as within the consumer space; most QR codes in the wild, are simply used as a means of storing website links and affiliate information. These are designed to allow people to simply scan the code out of a magazine, business card, coupon, or what-have-you; in order to very quickly load the website hyperlink and/or fill a virtual document.

For example, a QR code at a public WIFI access point will have all the data necessary (link to login page, SSID, password) to allow the scanning smartphone to access their network. Likewise a QR code on a coupon will link to the retailer’s online store page and pass any promotional offers associated with that coupon automatically to it’s e-shop.

QR codes, at least when dealing within the consumer space, are predominantly a means of convenience. They reduce the friction encountered when user’s operate within virtual spaces. Friction such as inputting long arbitrary names or numbers (such as a WIFI network’s SSID or password); or website domain names, where a typo could expose the user to a potentially malicious imitator website.

The friction is reduced because the process of scanning a code with a modern smartphone is far easier, than inputting the data manually using (most likely) a touch keyboard into that same smartphone. Another benefit is the probability of user error (such as mistyping a password or domain name) is eliminated. This is done by automating the process of data entry and bypassing the user in that work flow. That’s what I believe constitutes the vast majority of useful applications of QR codes in the consumer space, at least this is the case when talking strictly about static QR codes.

Additionally. The Wikipedia article for QR codes list many different (specific) use cases for them in the the consumer space; however in my opinion they all boil down to the two things I mentioned earlier: following links and filling in virtual documents.

Anatomy of QR codes

The smallest unit of information on a QR code is referred to as a module. A module is a single square that is coloured either white or black. For example a version 1 QR code is made up of a 21 by 21 module grid, totalling 441 individual modules. If you were to count all the chequered squares along either axis, it will add up to 21.

Look at the below two examples, both of these QR codes are identical Version 1 QR codes. They both have the same 441 distinct modules on a 21 x 21 grid. The only difference is the actual image size. This should illustrate that (within reason) the actual pixel (or print) size of the modules doesn’t matter with QR codes. As long as the scanning devices’ cameras can fit the entire code structure within frame and focus.

Bash instructions:

qrencode -o qrc_V1_small.png -s 3 'ECC'
qrencode -o qrc_V1_large.png -s 6 'ECC'

A QR codes’ modules are organised into several structures. These include: three position markers, several alignment markers (number varies with version/size), a version information zone, a format information zone, a timing zone, an area for data and error correction keys, and finally a blank quiet zone to denote the border of a QR code.

image taken from wikipedia.org

QR code size specification

QR codes are rather versatile, they have the ability to encode: ASCII symbols (letters and numbers), media (images, sound, and video), as well as even executable programs (compiled binaries). However, although they technically have this capability, it is severely hampered by the size limitations of the QR code standard.

At the time of writing, the largest viable QR code that can be created is the ‘Version 40’ variant. QR code Version 40 can encode up to: 7089 bytes of pure numerics, 4296 bytes of alphanumerics, 2953 bytes of miscellaneous binary (e.g. media), or 1817 bytes of Japanese Kanji characters. This is done using the lowest value (level L) of error correction, thus leaving more space for actual data. So these are the absolute maximum values.

Refer to file “QRcode_version_table” below for a full list of all version specifications.

image taken from wikipedia.org

Test case of numerical barcode capacity

This was an interesting one, because although the version 40 QR code specification states that I could create a numerical QR code with a capacity of 7089 bytes. In actuality the maximum amount of data that I managed to fit into a QR code was 7080 bytes. I honestly don’t know what to make of that. The ECC (level L) was supposed to be factored into the 7089 max value, i.e that is the maximum data storage in addition to the space that the error correction takes up. So it can’t be what’s limiting me from the max value. As to what is happening, I’m not sure. It could be anything, including a limitation of the program I used to create these codes (qrencode), or it could be some unknown setting, text file associated metadata, or even some unnoticed human error in play. Hence I will include the input files I used here so that you can try it out yourself, and see where I messed up.

Bash instructions:

qrencode -r pi_decimals_7081.txt -o qrc_pi_7081.png
Failed to encode the input data: Input data too large

qrencode -r pi_decimals_7080.txt -o qrc_pi_7080.png
Successfully compiled QR code containing 7080 bytes of pure numbers
According to Xed, this file weighs 7080 bytes.

QR code Error Correction Capability

QR codes have a built in Error Correction Capability (ECC). They use the Reed-soloman error correction codes in order to facilitate a certain level of data redundancy. This enables QR codes to be readable even after they have sustained damage. Such as by getting scratched or being partially obscured by grime. This error correction facility comes in four levels: L, M, Q, and H. The error correction of each level is expressed as a percentage of the total data that can be lost whilst maintaining the QR codes readability.

This is as follows:

  • L has up to a 7% ECC
  • M has up to a 15% ECC
  • Q has up to a 25% ECC
  • H has up to a 30% ECC

Generally speaking, the error correction capability of a QR code isn’t free. The higher levels take up more of the QR code’s finite available space, space that could otherwise be used to encode more of the actual substantive data itself. This trade off between useable storage space and data read reliability, means that QR codes with higher ECC tend to be used in environments where code damage is more likely; or in applications where the printed QR code itself is going to in active operation for a longer time period. Such being attached to warehouse racking to identify the specific shelf location and product contents to an automated sorter machine.

image taken from archive.org – qrcode.com page

How to spot the ECC level on a QR code

To work out what type of ECC level set on a QR code, look towards the “format information” zone to the right of the lower left position marker. Immediately after the single column of blank (white) modules of the position marker, at the bottom of the QR code and the module just above it. These two modules display what level of ECC is employed within the QR code.

Bash instructions:

qrencode -l L -o qrc_ECC_L.png 'ECC'
qrencode -l M -o qrc_ECC_M.png 'ECC'
qrencode -l Q -o qrc_ECC_Q.png 'ECC'
qrencode -l H -o qre_ECC_H.png 'ECC'

zbarimg *.png

Using ECC to incorporate logos into QR codes

When I looked into how people actually created the fancier QR codes; the ones’ that incorporate graphics such as text and logos. I was genuinely surprised at the crudity of the methodology. I thought that it may involve something akin to passing arguments to the QR code generator to re-route the data sectors around the graphic. Nope. It’s actually laughably simple. If you wish to incorporate graphics into your QR code, just crank up the ECC to max. Output the QR code. Then slap that graphic on top the QR code using some graphics manipulation software. In this case GIMP. Done. I mean it does the job. I just don’t like the idea of purposefully damaging data integrity.

Look at the below examples. Both of these QR codes hold the same data. This being a link to this website’s homepage. The size disparity between these two is caused by the additional error correction code added to the level H QR code. It caused it to jump up a couple of versions. I’m guessing that since my logo covers more than 7% of each of the QR codes, this is the reason why the level L QR code is no longer functional, whereas the level H QR code continues to function after the addition of the logo due to the logo covering less than the 30% of it’s maximum error correction capacity. This methodology seems rather crude, but it works.

Example of a real QR code that incorporates a logo

Encoding and decoding QR codes

There are numerous ways to generate your own QR codes. I’ll just mention a few to give you an idea of where to start.

Firstly, I should mention that there are paid services that allow customers to get custom QR codes. This includes things like “dynamic” QR codes, that can supposedly keep a tally of the number of times they have been scanned. However if you aren’t using them for professional applications. I generally wouldn’t recommend using paid services like these. This is a tinkerer’s blog after all. That being said, I mention them here just to make you aware of their existence.

All the tools that I mention from this point are free to use and readily available. If you are using a Linux based operating system, or virtual machine, or use bash in Windows. I recommend downloading and using two programs: “qrencode” and “zbar-tools”. Both are available in the Ubuntu main repository. This is actually what I primarily used to create and test all the codes in this article.

The zbar-tools toolkit comes with two relevant programs. zbarimg and zbarcam. zbarimg is used to scan local images of QR codes and can output that data either to standard output (usually the shell), or piped into a file. zbarcam has similar functionality, except it can use the computer’s camera to capture a QR code.

Alternatively, for quick QR code generation you could use an online website. I don’t want to recommend any for liability reasons, as there are lots of random websites that can do this. What I found interesting though is that the search engine duckduckgo.com actually can generate QR codes as well. I came across it rather by accident, as it returned QR codes with the search term data within it.

To use DDG to create a QR code, just type in “qrcode” followed by a space and then whatever textual data you want in it. I find this method rather novel, and probably good for simple quick and dirty codes. However it lacks the precision of functionality that a program like qrencode gives you. Such as the ability to specify the module size, and ECC level of the generated QR code; qrencode does this by passing arguments to the program.

TLDR

Tools to create QR codes

  • Linux: qrencode
  • websites: duckduckgo.com, etcetera
  • paid services for business including dynamic QR codes

Tools to decode/scan QR codes

  • android phone apps
  • (zbar-tools) zbarimg & zbarwebcam

Encoding and decoding binary QR codes

To encode a file (such as an image) into a QR code, you need to pass an additional option to qrencode. Use the -8 argument to specify 8 bit mode. You also need to use the -r option to specify a file input.

qrencode -8 -r input_image.png -o output_qrcode.png

To decode a QR code image of a binary into a file. You have to pass the below options to zbarimg, to allow it to know that it is dealing with a binary file. Additionally you then need to pass the output from zbarimg into a file. Otherwise it’ll just output the data into standard output (i.e. the shell itself).

zbarimg --raw --oneshot -Sbinary qr_code.png > output_file.png

One thing to note. Versions of zbarimg (zbar-tools) older than version zbar-0.23.1 do not have the capability to decode binary files. Additionally, at the time of writing the version of zbar within the Ubuntu repository was zbar-0.23; an older version without the capacity to decode binaries.

Alternatively decoding a binary QR code without specifying the output format, or without piping the contents into a file; instead just letting it output into the shell: will cast the contents as ASCII text. Instead of a file it will output a string of nonsense characters. However the first couple of legible characters should consist of file metadata that can tell you what format the binary data is in. The below example is the same QR code as above but outputted as ASCII rather than as a binary.

QR-Code:‰PNG

\00\00\00
IHDR\00\00\00Œ\00\00\00Œ\00\00\00!¢Öi\00\00IDATxÚíݱmƒ@†á8rÏ\00´i#s¤af`7™Ã‹¸e\006Hé”|`r<oé\ù^}÷c[>õ}ÿ‚}ójHBÎNJ¢Xã?5M“ÙÞµm»øwÿt•‘$u‡´uZîýíclõõö9»f–ªª2ÛÄ»v;¦÷$IÝa¥Óݑ©ëzvÍårIؐ1½'Iêê.§“áDïI’ºƒº;HïI’ºI$$DHI$$’@H"	$$’@H"	$oéúE’7ãK’ºCuÞe>—ϵÍmïùLª$©;ü—ÓÝfI‡$‘’HI ‰$’HIG%Ù+³^¼ÈžTw8%IÝauZ®ë:»yGY–IzO’ÔH"	$aûa6œd I$!ïº3Ì®w	$u’HI0ÌJH‚aÖ0uGHINw†YIIêÎ0k˜I$$’`˜…$‘ìaV’ÔH"	$Á0+I 	†YÃ,ÔH"	$‘’@I 	$‘„58ö™OßýÞ/[¿ÁeI’¤gh:Ã5cëcþš$Iâ®aO“4ñåb©¾cëh,ÛRIzô¶AÂ\“³ Éé.[¾¯.ñw¦×ÿüéJӒ$IÒîó”j½;’4މ59˶T’Á‘‚Sß÷wEa_žÈЈ$©;¬Tw$”#_{G}¨õ—´\00\00\00\00IEND®B`‚

Closing thoughts

QR codes are basically ubiquitous today. They are present everywhere. And applicable in many use cases ranging from anything; from storing simple web links, to gaming uses such as markers for augmented reality. I recently found a tiny one that was printed into the underside of my kettle. Why is it there? Just because. The point is that they are everywhere.

Additionally, the technology is exceptionally accessible. Having a surprisingly small learning curve. This coupled with the fact that quality creation tools (like qrencode) are freely available, means that if you for whatever reason would like to use a QR code within your work; there is little reason not to do so.

If I am perfectly honest however. I personally don’t see much actual utility for me other than inserting a QR code linking to my website, or email within a business card. Perhaps, even in printed articles – as a means of linking in additional online resources. It’ll certainly have a lower level of friction, than printed hyperlinks have.

If I’m honest. The main real appeal of this technology to me is the novelty of storing binary information within a printable medium. The fact that you can encode an actual binary (so long as it is smaller than 2.9kb) into a paper medium, is wondrous. Check the links below for a Youtube video of a person who encoded an entire executable game into a static QR code. Not a web link to game. The game itself. Imagine storing actual games, into a book. Tiny games, but still. Cool.

Anyway, happy QR coding. Thank you for reading.

Some fun

Links, references, and further reading

https://www.youtube.com/watch?v=ExwqNreocpg

Scan Barcode QR Code From Webcam & Image File in Linux

The purpose of QR Codes

QR Codes basics

https://en.wikipedia.org/wiki/QR_code#storage

https://en.wikipedia.org/wiki/Binary_number

http://qrcode.meetheed.com/question14.php?s=s

https://www.linux-magazine.com/Online/Features/Generating-QR-Codes-in-Linux

https://www.binaryhexconverter.com/ascii-text-to-binary-converter

https://en.wikipedia.org/wiki/EAN-8

https://en.wikipedia.org/wiki/Universal_Product_Code#Check_digit_calculation

https://en.wikipedia.org/wiki/Barcode#Symbologies

https://en.wikipedia.org/wiki/Binary_number

How To Convert Images Into ASCII Format In Linux

http://www.qrcode.com/

https://web.archive.org/web/20130127052927/

http://www.qrcode.com/en/qrgene2.html

https://www.thonky.com/qr-code-tutorial/error-correction-table

https://scanova.io/blog/blog/2018/07/26/qr-code-error-correction/

https://www.qrcode-tiger.com/qr-code-error-correctionhttps://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction

https://medium.com/@r00__/decoding-a-broken-qr-code-39fc3473a034

#0017: Creating a Toy Drag Racer Car

#0017: Creating a Toy Drag Racer Car

Prelude

This will be the first in a series of articles on making crap from garbage. I intend to build on this initial car, by adding more functionality and complexity down the line later. The purpose of this series of articles is to illustrate how accessible our hobby actually is. All you really need is access to information, basic tools, and most importantly: a little motivation and imagination.

Basic drag racer toy car.

As you can probably tell from the pictures; this toy car once had additional components that I removed for this write up. These included: 4 LED “””head-lights””” (2 white, 2 red); a jumper cable and switch, to allow the motor to be run using only one of the batteries at a time (for a slower speed); and additional wiring to allow the motor to run in reverse. Essentially whatever bollocks I felt like lazily sticking into the thing.

This should however illustrate that you can keep adding complexity to the basic frame work … Yeah, that’s why I reused the same haggard little tupperware container with the two unused switches: to make a point. It wasn’t abject laziness at all. Nah.

One could even keep adding complexity and replacing components until a simple drag racer can turn into a self steering robot. This could be done by using ultrasonic sensors, microcontrollers, and servo motors just as an example. However the basic framework is a good starting point.

Toy demonstration

Making the thing.

Tools and materials.

So what do you need to make this masterpiece? A soldering iron will help but twisted wire connections and electrical tape will do. Work with whatever you have on hand. I’ll just list out what I used.

Tooling:

  • soldering iron
  • heat gun
  • DC power supply
  • multimeter
  • precision knife

Consumables:

  • electrical tape
  • heat shrink
  • hot glue

Materials:

  • wires
  • tupperware box
  • gears and wheels kit
  • switches
  • AA battery holder
  • AA batteries
  • rubber-band (elastic band)
  • 3 volts DC motor

Build process.

Its largely self explanatory from looking at the pictures but I’ll give ya a quick write up if you insist on reading. Nerd. Anyway, get either a cheap wheels and gears kit (yes I am a hippo-crit) from an online store, or salvage wheels from broken toys if you have any, or use bottle caps even. You can even make decent wheels from either cardboard or by working random stiff plastic with a saw and a file.

Next, cut appropriate holes into the plastic box, sardine can, old butter tub, or whatever you’re calling a chassis. Then affix the motor into the chassis using hot-glue or tape. I wanted to use a belt driven system for no other reason than I wanted to use a belt driven system. So I used a couple of belt pulleys from the gear kit and a near dead elastic band as a drive belt. I know what you are thinking, and yes it is very unreliable.

If I were to redesign this for simplicity and reliably; I would just insert the motor directly into one of the rear wheels and power it that way. Better yet you can use two motors, one for each rear wheel. Anyway, next, throw in a switch, a useless fuse just for fun, and an occupied battery pack. Done. Enjoy.

The project is so simple it seems silly didactically going through every step of slapping it together. Just look at the pictures: yours should be like that but good. The point is to make it using the materials on hand. Improvise as a matter of course.

One thing that might be good to improvise on is by using a salvaged battery holder if you can not find one. I know not everyone has access to broken Poundland fairy lights. For example the motor here came from a cheap hand held fan. I could easily use it’s chassis moulded battery holder instead and just butcher it to fit. No worries.

To source the material I recommend a discount store like the aforementioned Poundland or the 99P shop. You could probably get all the materials for less than a fiver. And if you’re really on a budget, then I recommend the dumpster behind Poundland. Don’t ask me how I know.

Belt demonstration

Schematic

It’s not really necessary given the simplicity of the circuit. But I’ve included one never the less for the sake of completeness.

made with digikey.com/schemeit/

Circuit power use.

To satisfy some curiosity I decided to measure the power usage of the motor, and power delivery that the batteries can supply. I did it to give me an idea of how much power the batteries are able to provide, and how much of that available power the single motor uses. That way I’d know what’s limiting performance, should that become a concern. And it will once I decide to start adding components, such as additional motors.

Results:

Tested with a 6 Ampere max bench power supply against mismatched old batteries. Guess which performed better?

(BPS = Bench Power Supply)
BPS powered Motor (spinning freely): 3V @ 0.25A (0.75 W)
BPS powered Motor (jammed): 3V @ 2.71 (8.13 W)
Battery powered Motor (spinning freely) #1: 3V @ 0.18A (0.54 W)
Battery powered Motor (jammed) #1: 3V @ 2.02A (6.06 W)
Battery powered Motor (spinning freely) #2: 3V @ 0.29A (0.87 W)
Battery powered Motor (jammed) #2: 3V @ 0.70A (2.10 W)

My conclusion on the circuits power usage is that the junk batteries that I used for this application are not able to provide the maximum amount of current that the motor can use when spinning freely in the first test. And in the second test although the batteries performed nominally when free spinning, when the motor was jammed causing it to draw more current; the batteries failed to provide the needed current. So the batteries are the limiting factor here. Probably because they’re dying. From this slapdash test, I can tentatively conclude that if I wanted to add an additional motor, I’d also need to scale the power supply relatively … or use new batteries.

Really I should’ve tested it with two fresh 1.5 volt alkaline batteries as a control. Then I could’ve tested the motor, by adding an additional two fresh 1.5 volt batteries (in 3 volt series) parallel with the base two, to allow for a higher circuit current output without increasing voltage. That would’ve been a better test. But I took all the photos for this maybe two months prior to doing this write up on it; and I don’t feel like going back to it for something this minor. However, I will for the next article that uses this drag racer. This test was bad.

Closing thoughts.

Why make this thingy? (technical term)

I wanted to make a very basic bare-bones motorised toy car. The reason for this is that I think its a really good project to get a complete beginners feet wet in electronics, and more broadly in getting to actually making things in general. The scope of the project is small and its largely practical. There is very little in the way of actual measurements and maths. In addition, the tooling needed and materials used are basic and readily available, as they are salvaged cheap electronics and household sundries.

I think something like this is ideal for children especially since once they’re done, they end up with a toy they made themselves. Every time they play with it, they might get that little endorphin kick saying ‘I made that’ and before you know it — they’ve been bitten by the bug.

Another reason why a project like this is good is because unlike how many get a start in the general electronics hobby today – i.e. by purchasing kits and completing them. Creating something useful or of-value from junk promotes and develops a better skill-set then just putting together pre-made puzzles. Sure kits can develop people’s technical skills in doing so (like soldering), a familiarity for the various components involved, and even some trouble shooting and diagnostic abilities in order to get the thing that they put together actually working.

Usually though, in my experience once the kit is complete; be it an electronic dice, an AM radio, or what have you. It is done. At which point it is put down and forgotten. This is unless the person gets interested in one of the higher concepts the kit introduced them to; like in the case of how putting together a DIY radio kit can become a gateway to repairing radios or the ham radio hobby as a whole.

This is of course a good thing. However in general, purchasing kits has in my opinion limited returns (such as mentioned above), and can get overly consumeristic in nature. Buy the kit, make the kit, buy the next kit, make the next kit; and so forth. So what do you do when you don’t have the funds for the next kit, or have a child that becomes bored and thinks that’ll all this hobby has to offer.

Well that’s where one has to become inventive. Create your own kit. And from what? Whatever is around. Putting together machines of your own creation from junk develops imagination and creativity in people. It teaches them to see more than what an item is, instead it promotes seeing the parts it is made up of, and what it could become.

That old microwave the neighbour left out. Is actually not just worthless e-waste. It is actually a magneto, various high power resistors you can use as a resistive load in your experiments, and even a high voltage transformer that’s likely to get you killed. Obviously I am joking about the microwave, I am not advocating for inexperienced or immature people start with mains power electronics. Learn, but learn safely. I.e. Low voltage direct current devices.

Working with salvage also gives people very localised and consequently practical (read valuable) experience. This is because they’ll be working and tinkering with the local devices available to them. The same ones in their everyday environments, and in doing so they will gain insights into their workings. Insights that may lead them to modifying and repairing some of the same items for future fun and profit.

Note: I read over this, and even I can tell it’s pretty bloody preachy. I am not saying kits are bad, they are just another avenue for this hobby. Sometimes it’s nice to play with something that isn’t already broken. However I do think that (certainly basic) kits are transitionary. You make kits then you move on to fucking about with whatever takes your personal interest. And like I stated, kits are often a gateway drug to your chosen field.

Make no mistake what you are reading is the toned down version. The first draft was hard for even me to read without rolling my eyes in my skull. No need to thank me for sparing you that, but you are most welcome.

Thanks for reading.

#0016: Software recommendation: Firefox Monitor and haveibeenpwned?

#0016: Software recommendation: Firefox Monitor and haveibeenpwned?

https://monitor.firefox.com/

https://haveibeenpwned.com/

Preamble

In a bid to make more immediately useful content, I’d like to start recommending some of the various tools that I use. In this case it is an online service. Namely Mozilla’s Firefox Monitor; or more to the point, it is actually the website: haveibeenpwned.com (HIBP), which Firefox Monitor uses to enable it’s service.

What do they do?

In essence Firefox Monitor and HIBP are used to check whether or not an email address is associated with a recorded data-breach. Keyword: “recorded”. It does this by using a database of known breaches provided by haveibeenpwned.com.

The purpose of this service is to allow people to ascertain whether or not, an online account (and the user information there in) associated with the email address: has been compromised in a known data breach; and thus in need of immediate remedy. Things like: changing passwords, recovery phrases, and generally being aware that any potentially sensitive information associated with that account, such as: full name, mother’s maiden name, GPS location, education, birth date, telephone, city, school, or business information has now circulated within the hacker community.

Additionally, it helps to know which company is to blame for the spike in volume of spam and phishing emails, that will most certainly accompany said breach. I don’t know about yourself, but that’s something I’d certainly like to know.

Why is this service important?

It is my belief that every solution begins with awareness, the awareness of the problem. Only then can we move to better the situation. This tool gives you exactly that.

In my opinion, the main reason why I think this tool is important is because the companies involved in the data breaches themselves are loath to make their customers aware of them. Even though it is in their user’s best interests; it is not in the businesses best interests to advertise any breaches beyond the legally mandated/enforced minimum. Furthermore, who knows what that actually even is when dealing with global or multinational companies that operate over many legal jurisdictions. This is especially true when dealing with larger companies with entire legal teams at their disposal.

This service is important because (still just my opinion): companies in general tend to quietly patch any security vulnerabilities as they find them, and move on hoping no-one has noticed. This is especially true when there is no internally confirmed security breach.

Whenever a confirmed breach does happen, the first thing that the company responsible does is downplay the scope and severity of it. This may (and probably does) include: not even publicly reporting the breach until it is already made public elsewhere, often at a much later time. In many cases there is even resistance to acknowledge fault after the breach is made public. This is most likely a bid to exonerate themselves of any potential legal liabilities involved.

At the very least acknowledgement of fault could be seen as weakness. Weakness that will shake public confidence in the company and/or service. Therefore it is in their best interest to maintain the general illusion of control and/or competence. It’s corporate PR 101. It’s just a shame that the company and it’s users’ interests don’t align within this circumstance.

Why should people use these tools?

Both Mozilla Firefox Monitor and HIBP are free to use publicly available tools. Both tools come from reasonably trusted sources. Firefox Monitor is the product of an open-source community driven effort, giving it a certain level of transparency. And HIBP was developed by Troy Hunt, an authority on the topic of digital security. Even if you don’t know who Mr Hunt is (and I didn’t prior to this post), the fact that the Mozilla team decided to use his HIBP database for Firefox Monitor means that they are vouching for it.

More importantly, the tools themselves can assist an individual with regards to protecting their personal information online. They do this by allowing the individual that exact thing that I mentioned earlier: awareness. Awareness of whether or not that person’s email associated account information has been circulated, and which company is at fault for it.

For example: if you used the tool and because of it now know that, an account associated with your email with company X has been breached; and along with that breach your “security questions” were revealed. Then now you know to both remove, and not to use those particular security questions, with any future account … ever. As they are basically permanently compromised. Forewarned is forearmed.

taken from https://github.com/mozilla/blurts-server

Difference between Firefox Monitor and haveibeenpwned?

Firefox monitor is a very slimlined version of the HIBP tool that gives the lay user just what they need, without overwhelming or putting off said lay user. It is rather idiot proof; merely requiring user’s to input their emails and press enter. That’s it. Firefox monitor also has been bundled in with a few basic articles on good security protocol, that may be helpful to the average user. Common sense stuff a lot of it, but you know what they say about common sense.

Although Firefox is the simpler tool to use, it must be said that HIBP is a far more robust tool. And the one that I recommend. This is because in addition to searching email addresses, it allows searching via: passwords, and domain names. The website also allows users to browse a catalogue of breached websites without running a search. Extracts below.

Ever wondered how many accounts have been breached because they used the password “love”? Wonder no more. According to HIBP, its 356006 times.

I have also perused a nice little selection of companies from HIBP’s catalogue of known breaches that you may find interesting.

Personal experience with a data breach.

Just an aside if anyone is interested. From reading the above “Why is this service important?” section, you might have gotten the idea that I may be ever so slightly cynical about the companies involved in security breaches like these.

Frankly speaking, whenever data breaches do happen, I do not consider the corporations involved to be “victims” of cybercrime, as many others seem to do. It is a nauseating sentiment. One that condones bad behaviour. This is because it is my personal belief that the vase majority of the cases are due to one core thing: a dereliction of duty. Them failing in their duty to protect the data that they collected. Little more.

In addition to consuming the various news articles about data breaches over the years. Ones that had the general themes of corporate incompetence. Like for example: employees carrying around sensitive data on unencrypted thumb-drives, only to lose them on the train. I also have a few examples of companies that leaked my very own personal information. All of this has coloured my opinions thus.

The most memorable is the online virtual tabletop gaming website roll20.net. The thing that rubbed me the wrong way about them is that at no point during the process did they ever take any accountability for allowing it to happen. They did eventually outline what information was taken, but they never offered an apology for their lax in security. Instead they covered it up with boiler plate (legal friendly) corporate speak.

Example: “The investigation identified several possible vectors of attack that have since been remedied. Best practices at Roll20 for communications and credential cycling have been updated, with several code library updates completed and more in development.” Assuming that is indeed true, the same could literally be said by any company involved in a similar data breach – just change the names.

Although from what I understand by reading the article that they linked in their post, technically (purely technically) this appears as though it’s not their fault. But rather it was due to the underlying technology that they used. At least that is the implication presented. I’d argue that they still made the decision to use said tech, and thus vouched for it by doing so. Making them responsible, at least tangentially. At least enough for a simple sorry. The closest their customers got to an apology was a “Frankly, this sucks.” Writing it in an official company blog post that they passed for a conclusive public report; authored by Jeffrey Lamb, the Data Protection Officer.

I remember thinking at the time that whoever was writing this was good at the bland formalities of corporate speak, but otherwise is (and excuse my French): a fucking dickhead. You have to keep in mind reader, that they only knew of their own data breach because of a third party report. One that was published months after the fact. The report was published in February of 2019, and the breach happened (according to Mr Lamb) sometime late 2018. No apology warranted, not even for missing the hack, until a third party told you about it months after the fact. They then go on write their conclusive report in august of 2019. So nearly a year, between data breach and the final public debrief, where they outline exactly what data was exposed. I call that incompetence. “Data Protection Officer” more like resident salary sucker.

The ultimate lack of accountability is what really rubbed me up the wrong way here. And why would they be accountable, there is little in the way of consequence it seems for these messes. There are even examples of customers defending roll20 in the comments, referring to them as “victims” of cybercrime. They aren’t the victims here idiot, you are! I’ll include some choice examples of this for your entertainment. Its customers like that, that make businesses feels like they don’t have to be accountable either for their actions, or in this case general inaction with regards to proactively protecting customer data. Please read through the example comment thread.

You really can’t reason with people like that. They have too much emotional stock in a corporation to admit to themselves that they got screwed by it. There were even people actually praising roll20 for it’s meagre efforts. A sum total of 2 blog posts, some notice tweets/emails, and for patching a hole in their own boat. Thanks roll20, stellar job. Shame about all my cargo sinking to the seafloor for the bottom feeders to enjoy. I mean you only lost my full name, my IP address (so my physical location), my password, oh and some of my credit card data. Don’t worry about that roll20 (not like you would), that’s my problem. Fuck those types of customers. Wankers.

Moving on. Another example of a gormless entity losing my data is ffshrine.org. A final fantasy fan site that I registered with in 2010 I believe; and haven’t used that account since 2010. Ideally, they would have flagged the account as non-active and deleted it after a couple of years. But alas, instead they just kept whatever details I gave them for the five years until their 2015 data breach. Where they lost subscriber passwords and email addresses. No warning email post event, nothing. Radio silent. I had a similar experience with tumblr back in the day. Radio silent. No accountability. Are you sensing a theme here, dear reader?

Closing thoughts.

I have written far more here then I initially wanted to, so I will keep this summary short. Tools like haveibeenpwned and Firefox Monitor are things that you as an individual can use to help protect yourself in cyberspace. They can help you take proactive measures to safeguard your own data. They can also show you evidence that the large corporations really aren’t as professional or as infallible as they like to appear.

And that when, they make mistakes; mistakes such as losing your data. It is often you that has to bare the brunt of the repercussions, with little if any repercussions to them. Maybe they incur a temporary stock dip. But the fact of the matter is, they’ll recover from it. However whatever data you provided them for safe keeping, well that’s now permanently out there. Enjoy.

For example. To this day I still get phishing emails that say something like: “hey MY_FULL_NAME, YOUR_BANK has detected multiple login attempts using PASSWORD_FROM_FFSHRINE.ORG to login. We have frozen your account because we suspect fraudulent activity. Follow the obviously dodgy link provided and give us your security questions to fix this.” Although I can recognise a phishing scam when I see one, many technology illiterate users can not.

And make no mistake, the companies that were lax in their security. The one’s that have the attitude that breaches happen; are the exact ones to blame for the perpetuation of the black market information economy. An economy that preys on people; the real victims. The people who trusted these corporations with their data, thinking it in safe hands. Not the corporations themselves whose lack of diligence and general incompetence allowed for the data that they were trusted with to be exposed.

Jeez… that got a bit preachy towards the end. Didn’t it? Sorry about that. It’s just seeing companies fobbing off their responsibilities, and then seeing customers with Stockholm syndrome defending these same companies against criticism – really ruffles my feathers.

Anyway, thanks for reading.

References, links, further reading.

https://github.com/mozilla/blurts-server

https://monitor.firefox.com/

https://monitor.firefox.com/breaches

https://monitor.firefox.com/security-tips

https://haveibeenpwned.com/

https://haveibeenpwned.com/About

https://feeds.feedburner.com/HaveIBeenPwnedLatestBreaches

https://blog.roll20.net/post/182811484420/roll20-security-breach

https://blog.roll20.net/post/186963124325/conclusion-of-2018-data-breach-investigation

Hacker who stole 620 million records strikes again, stealing 127 million more

#0015: Device analysis of an unbranded LED dynamo torch

#0015: Device analysis of an unbranded LED dynamo torch

Preamble

It’s rather hard to provide a useful review of an unbranded product such as this. Since it has no brand, and no model to specify; we can only identify this particular device by it’s general appearance. Unfortunately this can be an issue when it comes to stating anything definitive about the product. This is due to the unregulated variations and derivatives on the market. In other words, just because two of these unbranded devices are outwardly identical, doesn’t necessarily mean that the components (or configuration there of) are also going to be the same. Heck, we don’t even know if any two different units were made by the same OEM (Original Equipment Manufacturer). Consequently, your mileage may (and probably will) vary if you pick up one of these dynamo torches. I can only show you what I have in front of me; and I have a sample size of two.

Device Demonstration

Device internals

Schematics

Torch A

made using https://www.digikey.com/schemeit/


Torch B

Key:

L1: 5 mmØ through-hole LED (white)
L2: 5 mmØ through-hole LED (white)
L3: 5 mmØ through-hole LED (white)
R1: 5.1 ohm resistor
S1: two-state toggle slide switch
V1: dynamo (AC source)
B1: [x3] AG10 / LR1130 button cell battery

Possible modification

  • rectifier and capacitor on the dynamo circuit

Key:

DB1: Diode Bridge
C1: capacitor

I think that perhaps some kind of rectifier followed by a capacitor on the dynamo circuit will provide the parallel LEDs with a more constant voltage. Allowing it to stay on with a constant light intensity for a little longer, at the cost of a few initial revs without any light output as the capacitor charges. Is it worth the effort? Not especially. It might just help prevent the sudden light dropout. I’ll need to test it out myself before I say anything definitive here.

As for the rectifier, I would recommend a full-bridge rectifier using four diodes for maximum efficiency. That is if there’s space for it. This is because this configuration inverts the AC negative voltage into positive, before passing it onto the smoothing capacitor. Alternatively, a single inline diode will simply cut the AC in half by passing only the positive voltage. It’ll do the job, but at the loss of the negative voltage of the AC. Although, this is lost anyway at the LEDs, since they’re diodes. With this use-case, I think we need all the efficiency we can get, and a full bridge rectifier may even make the device function a little better. Like I said it needs proper testing, that’s why I stated this as a “possible modification”, rather than my usual “recommended modification”.

EDIT (2021-02-04): On further thought, any benefits of rectifying the dynamo AC will probably be negligible. I believe this is the case due to the low voltage provided from the dynamo (approximately 2V AC) coupled with the forward voltage drop that will occur within the diodes themselves.

The example diodes I have (namely 1N5818) have a really small forward voltage drop of 0.45 volts at 1 ampere. Even this miniscule drop will have a notable effect on any resultant DC.

web link: https://www.bitsbox.co.uk/data/diodes/1N5818.pdf

Still I still think the idea of rectifying a dynamo’s AC to DC would be worth while if for no other reason then to make a generally more useful form of power. Unfortunately, for a dynamo of this output, it’s just not worth it.

Dynamo AC generation demonstration

Gear array and dynamo

A1: Spur rack: 24 mm w/ 11 teeth
B1: Spur gear: 8.5 mmØ w/ 10 teeth
B2: Spur gear: 41 mmØ w/ 81 teeth
C1: Spur gear: 7 mmØ w/ 12 teeth
C2: Latching spur gear: 2 pivoting teeth
D1: Internal spur gear: 26 mmØ (inner diameter) 32 mmØ (outer diameter)

(Please note: when two gears have the same gear letters, it means that the gears are connected.)

Dynamo:
24 mmØ toroidal (doughnut) magnet (with 4 Norths and 4 Souths)
coil consists of:

  • dynamo core (magnetic conductors)
  • a 920 cm length of 0.1 mmØ gauge copper wire
    (wrapped into a coil of ~276 revolutions)

Please forgive any inaccuracies in naming convention for the gears, this is the first time I have actually paid any attention to the subject of gears in general, and it appears to be a deeper subject than initially expected with quite the learning curve involved. The “latching spur gear” and “internal spur gear” are the ones where I hazard a guess as to what they might be called, this is because at the time of writing I was unable to find a named example of what I was looking at. It can be difficult to find something when one doesn’t know the keywords to search.

Gear system in action

Pushing force on the handle moves the spur rack against spur gear B1. B1 then rotates clockwise. This in turn rotates the conjoined spur gear B2 clockwise. B2 interfaces with spur gear C1, and rotates spur gear C1 counter-clockwise. Which in turn rotates it’s conjoined latching spur gear (counter-clockwise).

The swivel teeth within the latching spur gear are designed to lock into the teeth of the internal spur gear D1. Although this happens only when they rotate counter-clockwise within D1. In doing so they rotate D1 and it’s toroidal magnet. This rotation causes a flux in the local magnetic field. This is picked up by the magnetic metal of the “dynamo core” and transported via this core to the copper coil winding. Where it induces an alternating current that powers the LED lights.

Once the handle is fully pressed in, with the spur rack (A1) at the end of it’s track. The operator’s pressing force is removed. At which point the spring in the handle pushes the handle back out; and forces the spur rack to move back to it’s start position. In doing so it rotates spur gear B1 counter-clockwise this time, this rotation is passed on to spur gear B2. Which rotates spur gear C1 clockwise. This rotation is passed to the 2 tooth latching spur gear C2. Which in turn spins clockwise freely and allows the gear system to reset position. Then the process repeats as the operator pushes on the handle. And so on.

The device as a consumer product

Build quality

This is probably the cheapest dynamo torch on the market. If not in price, then certainly in build quality. The main body of the torch is made up of two separate mouldings that sandwich together. This configuration clips into the grey plastic ovoid that houses the LEDs, batteries, and the light guide/reflector. Add to this one or two (depending on version) small self tapping phillips screws to keep the device together.

The phillips screws for the housing are set into thin moulded standoffs that seem prone to either splitting at the screw thread or cracking at their base. The cracks on the base of these standoffs I believe are caused by the general mechanical stress incurred by the gear and spring system. Both in action: when the dynamo mechanism is being used, with the spring loaded handle being vigorously pumped back and forth; and at rest, because the spring that pushes the handle back out puts a constant stress on the gears that are set into these flimsy standoffs.

I have had these two torches in safe storage for a few years, I was surprised to find out that one of the two had broken it’s standoffs, well off. Considering my storage solution (think sealed plastic tub in a garage), this may have been caused if not exacerbated by temperature variations, in addition to the stress of having a coiled spring pushing against them. But basically, I put the thing away fixed, and found it broken. Considering that one of the use-cases the online retailers advertise this thing for is camping, I don’t think that the temperature swings of the mild british weather should have caused this.

Something positive. The internal components I generally have little problem with; from the LEDs, to the Dynamo, and nylon gears. They are all very inexpensive components, but there is nothing especially wrong with them. They are all basically fit for purpose. Even the dynamo, although unfortunately, it’s delicate hair thin wires extend out the dynamo coil and into the device proper: towards the switch and LEDs. This makes the device far more likely to suffer a breakdown, as these wires are far too thin and delicate to be used for general device circuitry. Especially when in the presence of an unshielded gear-system. Look at the pictures to compare the dynamo wire (~0.1 mmØ) to the LED (~0.4 mmØ) or switch (~0.5 mmØ) terminals to understand just how thin the dynamo coil wire is. Please note: inaccuracies in recorded measurements are due to the pictured calipers used … and me.

False advertisement claims

I have seen this torch (and it derivatives) in multiple online stores. I have also seen a lot of false advertising around this product across multiple vendors. Including Ebay, AliExpress and especially Amazon. This is predominantly due to the seller’s lifting the product descriptions from each other, in some cases they’re literal copy-pastes.

There are many claims on these store pages that made me chortle. These included: “High tech ultra bright LEDS” when referring to the 3 bottom market 5mmØ through-hole LEDs; or the sentence “perfect for outdoor use” when describing an electronic product that is about as watertight as the average kitchen sponge.

Since these claims made are subjective, you can’t say that they are technically wrong, because that’s just like your opinion man. These are (in my opinion man): just examples of product puffing or marketing wankery. Something that I honestly have come to expect at this point in my life. Whenever I go to buy something, I will inevitably have some to sit through at least some marketing bullshit, because apparently every single product ever made, is as great a sliced bread, and should get you as excited as the second coming of our lord and saviour. Or else there is clearly something wrong with you.

Moving on. Something else that I have come to expect, and let’s be honest here – enjoy: is Chinglish. And there are some great examples of this within these product descriptions. My favourite is “Works on a new technology of pressing handle with your hand.” Hey, it made me smile. Here’s another doozy for you: “LED torch adopt advanced technology of LEDs emitting level of 3 fluorescence tube”. What the actual fuck are they trying to say?! If internet scholars ever decrypt this product claim, you can probably safely bet that is it some form of bullshit.

Which nicely brings me to the real issue that I have with these product ads. It is the genuine examples of outright falsehoods. The main two claims that I have issue with, are: 1) That the dynamo action charges the batteries, and 2) That the product doesn’t include batteries in the first place.

For the first example I have an ebay advert that uses the keyword “charge” in it’s description and makes mention of the 3 disposable AG10 coin batteries that come in the unit. Although it doesn’t mention that they are single charge disposable units. Hence the assumption that the average consumer is likely to make is that the dynamo charges these batteries. Another amazon ads states the claims “No batteries required, Eco and rechargeable”, to make the customer think that it comes with some kind of componentry that either enables the device to charge without batteries (e.g. capacitors), or that the device comes with built-in rechargeable batteries.

Unfortunately neither are true. A cursory look at the above schematic for either unit A or B will show you that at no point does the dynamo charge the batteries. They are on two separate loops. Also, where is all the charging circuitry? The bridge rectifier, voltage regulator, and smoothing capacitors involved in converting the alternating current that the dynamo would produce into a fixed voltage direct current for the batteries. Additionally, even ignoring those facts: let’s say after reading this paragraph someone still isn’t convinced of my claim that the dynamo does in fact not charge the batteries; then why does this torch ship with disposable (non-rechargeable) alkaline AG10 coin batteries then? It’s because this claim is provably false.

Now onto the next false claim. This was the one that I took notice of initially, and actually inspired this rant. The claim of these torches not having a battery to begin with. The disproving evidence of this claim in some cases is in the bloody product description itself. I have even seen adverts that claim that it doesn’t have batteries, to then make the contradictory claim of a 15 minute running time at full charge.

Closing thoughts

I honestly never intended to talk this much about this budget torch. However the more I looked into the item the more I found to say. To sum it up for you: everything from the build quality, to the false claims: make this thing is absolute dreck.

I think the main reason as to why these types of products can make outlandish claims and still sell is because of their price. They are so inexpensive, that returning them may cost more in unreimbursed postage costs, than the refunded price of the product. For example: a torch costing approximately £2.50, will cost £3.10 (at time of writing) to return via a Royal Mail UK only “small parcel”. This is of course assuming that the customer bought the product from a UK distributor.

If it was bought from China, then a return is basically not financially viable. The international postage is only cheap one way; and that’s due to bulk export shipping from China. Consequently, I have had experiences with seller’s who have contacted me offering a full refund with no return if I removed a (well deserved) negative review I have given for the product. That’s likely the main reason why they have such high reviews (4/5 star average on amazon); because they buy off the negative ones; like mine.

As for my final word on the torches themselves: I think that they are basically designed to be factory fresh e-waste. They will go from the factory, to the seller, to the customer, and to the bin faster than should be acceptable. This due to their own shoddy nature and little else. They are a good testament to the saying: “you get what you pay for”. One could also use the saying “buy cheap, buy twice”, that is if a person actually intended to use these torches for their advertised use-cases. Good luck camping with this piece of hot shit in your back pocket.

Thank you for reading.

#0014: Tip for reinserting self-tapping screws into plastic housings

#0014: Tip for reinserting self-tapping screws into plastic housings

What is a “self-tapping” screw?

Whenever one removes screws from a device – especially a mass produced consumer grade device with a plastic housing; then chances are that the screws that were removed were “self-tapping” screws. As the name suggests, these are screws that are designed to cut their thread into the inner diameter of the plastic hole of the device housing that they are inserted into at the factory.

All self tapping screws have a few distinct qualities in common. These include: a relatively deep thread in order to cut into and grip the plastic, and a wide pitch between these threads in order to more effectively slide into the material. Additionally most self tapping screws tend to come to a sharpened point in order to to aid in aligning the screw as it is inserted into the hole.

So what’s the actual tip?

Well, when reinserting a self-tapping screw into it’s plastic receptacle. It is good practice to initially rotate the screw counter-clockwise (loosen) until you feel it pop or click into place. This process aligns the screw with the pre-existing thread, and in doing so means that when the screw is screwed in, it will slide into the already established thread and not cut a new thread over or across the old one. When aligned correctly, the screw should screw into the hole with very little resistance.

Why use this method?

The reason why this is important, is because repeated re-boring of the plastic hole will eventually strip it out of any threading. This is because each time a new thread is cut into the plastics it removes material; which in turn incrementally widens the diameter of the hole in the process. This can continue to the point that it can no longer effectively hold the original screw within it. Avoiding re-tapping the thread every time you reinsert the screw will minimise your damage footprint when repairing/working on the same devices repeatedly. Which is always good.

Video demonstration

Please note: although it may look like I am using force to reinsert the screw, I am not. It’s just the awkward angle and set up that may make it appear that way.

What to do with an already stripped or overlarge hole?

There are a few remedies to take if this advice is coming to late. The quick and dirty solution is to use a larger size self tapping screw that then can cut a new thread into the widened hole. After which one has to then absolutely makes sure to always realign the new larger screw with it’s thread before reinserting it. This is because any further damage to the plastic hole may make it entirely unusable. E.g. a plastic stand-off splitting entirely due to it’s enlarged hole.

The more intensive repair requires filling the hole with something that the original sized screw can then bite into. The most likely materials used here are either hot glue for a “temporary” fix; or melted plastic of the same type as used by the device for a more permanent solution. If you use the melted plastic route: I recommend filling the hole entirely, then drilling a new hole of the correct diameter. Followed by finally using the original self tapping screw to cut a new thread into this virgin material.