Saturday, June 19, 2021

Field Report: Mystery Machine and Orb Weaver

Hop ups

The hop ups work well. I can adjust them in the field from no effect to curve straight into the sky. 

Accuracy seems about on par with rival blasters using rubber flap hop up. 

Considering how simple this design is, seems like a winner.

Mystery Machine

This performed admirably for most of the day.... until the end when it mysteriously stopped working.  What happened? 

Turned out the nub detention mechanism broke.


This is after cleaning up the snapped off plastic and co.

Turned I designed it, I did the nub retention platform first, followed by the  rival round feed path. I stupidly didn't notice the feed path cut into the nub retention platform, leaving just 1-2 mm of PETG to withstand the impact of repeatedly slamming a mag in. 

Oh well.

Time for version 1.1.

A M3 screw actually works REALLY well as a catch for the nub. Better than the original plastic design even. 


Hard to imagine that breaking from any number of magazine inserts. 


 V1.1 also changes the magazine catch to work with worker 15 round mags.


Orb Weaver 


I used this for the UF HvZ game, and several NOMAD PvP games.

Overall, it's performed admirably, with just a handful of nits.

  • During a PVP game with targets in trees, I aimed at some odd 40-60* angle up, and unsurprisingly, quickly stopped feeding. 
  • During a run in HvZ, the lid got bumped hard enough to spill the balls. Maybe two magnets are needed? Then again, was a pretty hard run. 
  • There's been a handful of firing twice incidents.
  • It is heavy at 6 ib. A significantly less dense (and of course, weaker) print could be worth a shot. 
  • Optic mounting is awkward, but I knew that going in. 

And that's about it.


I'm pretty happy with it, and plan on continuing to run it at HvZ events.  

Surprisingly didn't wind up with very many pictures of this game, if any one has some please do let me know!



Tuesday, March 9, 2021

T19 Heavy - 20x95mm MEGA; Mega-Con flywheel system

Ever since the modern (20mm) MEGA caliber and the Centurion was a thing, I have been wanting to build something reliable and magfed to run them full auto. This has only intensified with the advent of special rules for MEGA hits such as defeating shields/armor, killing special zombies, causing double damage, and counting as more points for DTC-like gametypes.

I never ended up doing what I should have back in the dark ages (jam a Zeus cage and a RS pusher box into a hacked up Centurion receiver), so the intent to eventually do a 20mm project followed me all the way to the T19 era, and now I finally got a round tuit to spare and did it.


Of course, this starts with a flywheel system. As a starting point for the profile geometry, I loosely scaled up the .50 cal Hy-Con including the 0.56-ish centerline area ratio, yielding 22mm control bore, 22mm rim width, and 15mm gap. I then designed a 67mm centerdistance (jumbo format is probably the best descriptor) system around that, yielding what is more literally a scaled-up Hy-Con than not.

For motors at dev stage, I used Racerstar BR2207S, as I had some 1600kv ones on hand already.

This might drive home the scale of this system. .50 cal Gamma cage looks downright small next to it.

Now this needs a breech. I opted for the existing mag standard. It's easy to get caught up in This mag design has X mm of wasted length! and similar griping, and that's how we get crappy, incompatible mags. Some careful design was required to use these mags, including the rear feed ramp to deal with top round positioning issues and the 0 mm cage flange thickness in front of the mag to keep required bolt stroke to a minimum.

Design elements are all the same as other modern T19 breeches. Angle cut, flared magwell, overinsertion stop on feed lips, no fence on the front for comfort, 7mm flanges, ...

This then gets its own mag release, its own side cover set (below), and a stock T19 drivetrain stack with the exception of a slightly longer bolt.

Add in a top rail front segment and one underbarrel gap filler/finisher/hand stop doohickey to polish it off, and we get...

Filaments in this build: Yoyi translucent red PETG, CC3D bluegrey PETG, Makeshaper orange PETG, Overture white PETG.


Overall excellent. I have had Hasbro mega up to mid 160s fps, and the one used Whirlwind I currently have up to 140-ish, and breakin wasn't even complete when I shot those. Also, this is really easy on ammo compared to a Zeus cage on mega --or a .50 cal T19. Reliability is so far awesome at the 12rps I have it set to max out at. It will feed and shoot just about anything and I have probably shot some of my testing darts 15 times into hard objects by now.

Now about the bad: The motors. I grabbed these because I had them and they would work for a ballistic proof of the cage. This could really use a larger, more modern motor, and also slightly higher kv than 1600, or else 5S or 6S. Spinups to high (which is 18-20k for this) speed are pretty crappy by modern standards, though not unuseful, with the 1600kv BR2207S and 4S. Also, Racerstar motors have quality issues and as usual the dynamic balance on this system is not great. I'll probably go for T-Motor F80 for an upgrade/option for this in the future.



Release notes duplicated here:

# T19 MEGA (20x95mm) Initial Release 03-07-21 #

Takes Hasbro-style 20mm mags. Mag tolerances are crap on commercial mags,
and some may need hand fitting with a file, particularly clone mags, as well
as release notch issues needing adjustment.

3 mag releases have been provided: the "stock" and -1mm (lower) straight
versions, and the "circular surface" one which is closer to what my hand fit
"stock" release ended up as after adjusting to get easy lockup and minimal play
once locked on all my mags. I recommend trying that one first. Some hand fitting
may be required regardless.

The "MegaMagDropfreeifier" part is a mod for Hasbro (style) 20mm mags which fills
in the second void/notch above the actual release notch, which often causes
trouble with snagging on the release. Print it out and glue it to *one* half of
the mag body (not both). File smooth and/or fill with a little devcon.

Top rail: Uses the T19_TopRail_NewFullLengthRearSeg.stl rear rail segment used
by the new (Gen2) .5 full length breech. Front rail is specific and included.

Bolt is different. All other drivetrain, stock, controls, etc. parts are the
same as a .5 cal T19E1.

Firmware difference is maxRPM=20000 and maxROF=700.

ACE-NX inline version - release; build notes

My current ESC I am building, putting into blaster projects, and am shortly to start selling on Etsy.

Gerbers, BOM, SimonK board definition, precompiled FlyShot firmware:



  • ATmega8 or -8A @16MHz with ceramic resonator
  • Infineon 6EDL04N02 gate driver
  • Nexperia 5x6mm LFPAK56 mosfets
  • LDO logic power
  • Boost converter from 5V rail for 12V gate drive supply
  • 40V mosfet options for proper 6S support, plus 30V ultra-low Rds(on) and high avalanche ruggedness/high Idm options for aggressive higher kv motors
  • 26x46mm, 2 layer, 2oz, 10/10mil trace/space (Fab by any vendor)
  • Minimum 0805
  • Enhanced mosfet footprints for easy hand solderability
  • Busbar ready
  • Designed for FlyShot support and use with tach output
  • ICP signal input
  • New board target: ace.hex (see:
  • SimonK-supported status and warning LEDs

There are no silkscreened component designators on my newer boards because they were frequently not resolvable and/or wouldn't fit anywhere with the density, so here's the usual passive placement guides, pay attention to color code:

The green labelled 50-100k resistors are an optional low side gate pulldown. I have been leaving these out - this was my first design with IC gate drivers and I felt the need to include the footprints for them anyway as I do with discrete boards, but they aren't actually required with the driver.

ISP pads with minified labels: RESET, SCK, MISO on the top row, then GND, MOSI, VCC on the second.

Other unlabeled component placements are obvious/unique. More info is in the BOM on mosfet, etc. options.


Above three low side gate pulldown resistors are superfluous. They also are not actually in the schematic, they were whacked into the PCB at the last moment anyway.

ISP pads are small and annoying, and could use to be bigger.

Caps for decoupling and so forth are overkill. Several 1206 parts could be 0805, and a few cap footprints could probably be Muntzed or combined into one larger value cap without any ill effect.

I don't particularly like the sense trace length and routing on paper, but these handle startups and sync holding just as well as any other board so I doubt there is a noise issue with that.

The 6EDL04N02PRXUMA1 driver is in the midst of a stock shortage and is unavailable a lot of places right now. Stock should be arriving back sometime this month at most vendors, I believe, but I might design future boards with a different driver in the interest of having those plus this one around in case one driver or another is sold out like this again. I already have a supply of them to use for now.

ATmega8 vs. ATmega8A

The exact MCU part to be used in ATmega8-powered SimonK ESCs is an area of ongoing testing. I have only built one pair of ESCs with the mega8 part so far - but I suspect the mega8 part is a better bet for comparator tolerances than the mega8A part.

Source Project Location Update/Change for DZ Industries Electronics.

Due to an EasyEDA change, the source projects for all DZI blaster management and motor control electronics projects are now found at The new ACE-NX board has had its release created natively in that tool and upon further investigation, the formerly shared EasyEDA projects have also been converted as well. Apologies to anyone finding a broken link in the last few months.

As usual, refer to the release posts here, as some placeholder components have been used (fixes WIP). BOMs posted here are the final ones.

Monday, February 15, 2021

S-Core firmware 0.98 - minor update

 What's new in v0.98:

  • Improved user feedback on shot request timeouts - I saw Airzone use a brief audible alert when a motor start attempt timed out without reaching speed, and figured this was a good feature to have, so it is there.
  • Miscellaneous fixes and refinements like not accidentally leaving tach input ISRs enabled after they are not needed anymore in certain paths
  • Improve license statement clarity and intent
  • Make overspeed trip less sensitive as iFlight motor options are touchy about throwing false error codes at certain speeds with older settings.
  • Add version with preset 30,000rpm flywheel speed limit for use with 9.0mm flywheels in particular to reach their slightly higher criticality, but really this is more of a paradigm shift, post-presets, of there being no need for a canned "Full" speed setting to exist that is tuned for full velocity operation. Note that 30k is NOT the criticality, necessarily, of even the 9.0mm Hy-Con with any given ammo, so if you use this DON'T just peg it to maximum speed, like classically done with the 25.5k setting! Headroom is left so you can dial in your "full speed" preset (or use the tournament lock, if you prefer) to exactly what is getting the highest and most consistent velocity with your ammo. For even the 9.0 wheels, this is around 26k.

All S-Core Firmware versions available here

Obviously I am rapidly approaching S-Core v1.00, and for that I have some corresponding plans. Despite all the sophistication surrounding, perhaps the most... core portions of the S-Core codebase dealing with feeding date to when Project T19 was a quick and dirty 2017 flywheel system testbed blaster. That code works, but is so in need of some further closing of loops and smarts. The belt-fed is already there on how the bolt management and automatic restrike now works.

Thursday, January 28, 2021

Flashing ZTW Spiders for FlyShot


Thanks for /u/torukmakto4 (in particular this), and /u/bendy1996 for info on these ESCs (hopefully didn't miss anyone!).

These ZTW Spider ESCs can be easily found on ebay and elsewhere, and are a pretty good supply of simonk ESCs for the hobby. But flashing these, especially documentation on flashing these for FlyShot is pretty sparse. This aims to fix that.

What to buy

Look for a ZTW Spider ESC 30A (Normal size, 25x43x9, the small ones do say small on the package, so it's hard to miss!). All the ones I have seen are labeled Opto. Be careful to avoid the ZTW Spider Pros, which won't work for our purposes (not an AVR). Most of the listings on ebay will either say simonk in the description, or have a picture with simonk featuring prominently on the packaging.

Figure 2: Here's an example, see the top of the bag for the simonk label.

There's also listings for a 12A, 20A, 40A, 50A, and 60A, which I will go into for the sake of completeness. The 12A ESC in particular seems interesting for ultra compact builds. 

There's also a 30A small I found nothing on, so from this point on assume when I say 30A, I mean 30A full size, and not the 30A small. Same for the other small variations like 40A small, and any others. They probably work fine, just untested and unknown which .inc file should be used.


I can confirm the 30A/40A works using bs_nfet, and it's likely the 20A will too.

Based on images online and research, the 20A just appears to be the 30A but without paralleled mosfets. Same size footprint, so not much of a reason to get it (see linky).

Warning, the following gets a bit rambly as I basically compile a few hours of web searching and forum browsing. Feel free to skip over to flashing.

The 12A I've ordered (for some fun with a compact 1408 build!), but haven't received yet. Feel free to ping me (/u/matthewbregg) to ask for an update on those in a month or so. I expect bs_nfet to work on them, based on some random posts. I found a nice thread with guts/USBAsp pad locations too, that apparently indicates a V2, but the V2 still uses bs_nfet, but must have it's fuses set over USPasp. I found a random store page with the quote "V1 version means SimonK Program,V2 version means ZTW Program.We offer is with SimonK Program,V1 version", but I wouldn't put much faith in that. Oh, well, I'll see what I wind up getting/if I have any trouble with it. Seems worst case for the 12As is I have to set fuses before flashing with bs_nfet, NBD.

There's also 18As, but be careful of those. There's apparently V1, which uses the BlueSeries 12A/bs_nfet firmware, and a V2 which uses a different firmware. There's a BLHeli inc file available for the V2 at least, so we have an easy way of knowing it's pinout. It should be a possible to either find a matching .inc file in the simonk repo, or just creating a new .inc file using the pinout the BLHeli .inc file gives us. The forum link contains images of the two pcbs, which are noticeably different, so once obtained it should be simple enough to figure out which version you have. Still, without a good way to tell the V1/V2s apart at buy time (maybe a detailed shop image, model numbers?), I'd avoid the 18A versions unless you really needed to save those 2 mm off the width.



All 4 of the ZTW Spiders I have obtained so far have had a bootloader which enables one wire flashing over an Afro linker. However, kkmulticopter has NOT worked, it gives me a content mismatch when verifying.

A few notes on any flashing with a two wire flash tool (EX: Afro usb linker)

The ESC must be powered, I use two 7.2V NIMH packs in series (overkill). Anything with enough voltage to be above the dropout of the regulator oughta work. You don't need, or arguably want the motor attached. I've flashed both with and without a motor however. If you use a lithium pack, a fuse or protection of some form is advised.

You might need to ensure you are in the dailout group, run your flasher as root, or chown/chmod the device (sudo chown $USER /dev/ttyUSB0).


If you already have an Afro USB tool, that'll work fine, but those are unobtainium now.

I've got two suggestions for that

I have not personally tried either however, so cannot fully vouch for them.

I can confirm that both RapidFlash and KKMulticopter have both tools listed in their dropdowns.

Hooking up is a simple as plugging the ESC 3-pin female header into the tool.

Note that many linkers come with a VCC pin, since I'm powering these via a pack anyway, I just snip that. Having two misaligned VCC voltages could do bad things.

What firmware to use

Based on reddit posts/blogs from /u/torukmakto4, bs_nfet seemed like a safe bet for both the 30A and 40A escs. And I can confirm it has worked for the ones I've tried.

If you get a different model, you might want to google around to check, but as my earlier rambling indicate, this can be… tricky.

The hex file I've used has been the precompiled bs_nfet available here. I know this works for the 30/40A Spiders, and I'm fairly certain there's no V2s or other weirdness out there to worry about with those models. This does away with the 10 khz carrier frequency for a ~17khz one, which has proven to be fine so far, I've had no rocky starts.

If you have startup gremlins, then might make sense to download the simonk github, replace the tgy.asm, files with the ones from the above google drive. 


.equ	POWER_RANGE	= 800 * CPU_MHZ / 16 + MIN_DUTY ; torukmakto4

and change it to

.equ    POWER_RANGE     = 1500 * CPU_MHZ / 16 + MIN_DUTY ; torukmakto4

and run make to get your bs_nfet.hex. You will need avra and make installed.

On ubuntu, you can run

sudo apt-get install avra make 

The downside to switching between 10khz/~17khz is the 10khz carrier frequency is audible (for humans, dogs reading this may as well stick with 10khz regardless).

KKMulticopter/raw avrdude attempt and failure

I am suspicious of this bug, as the version of avrdude included is 6.0.1, however attempting to use a newer version of avrdude, even with the conf file from kkmulticopter results in

Reading |                                                    | 0% 0.00savrdude: stk500v2_command(): command failed
avrdude: stk500isp_read_byte(): timeout/error communicating with programmer
avr_read(): error reading address 0x0000
    read operation not supported for memory "signature"
avrdude: error reading signature data for part "ATmega8", rc=-2
avrdude: error reading signature data, rc=-1

Only difference I can find between what the output header reports is

SCK period      : 45.6 us
SCK period      : .1 us (new version)

Using the version of avrdude included in kkmulticopter gets farther, with a seemingly successful read and then write before giving a content mismatch error again. If you've got an idea what's wrong here, I'd love to know, using avrdude for this directly would be great!

The command kkmulticopter runs is

/path/to/kkmulticopterflashtool_0.77/lib/avrdude/linux64/avrdude \
-C /path/to/kkmulticopterflashtool_0.77/lib/avrdude/linux64/avrdude.conf \
-p m8 -P /dev/ttyUSB0 -c afrousb -b 9600 -e -U flash:w:/path/to/spider_flyshot.hex:i

New Approach: RapidFlash

The bootloader appears to be there and working, but buggy with kkmulticopter, and attempts at raw avrdude have failed. I happened upon a different tool, RapidFlash, which did work.

Usage is pretty simple:

  • Set the serial port to the correct one (on Linux, should be something like /dev/ttyUSBN, on windows, probably COMN). You should be able to remove/plug in your programmer and watch this change.
  • Set the tool to the afro esc usb linker (or whatever linker you are using).
  • Load the hex file via the Load Local Firmware Button.
  • Click Flash Firmware.

Figure 3: RapidFlash UI

But of course, having this tool exist and be healthy would be too easy. RapidFlash is a chrome app, which is going away in the middle of this year. And it hasn't had any activity on it's github (shoulda dropped that link earlier) page for 5 years…. So while you can grab it here for now and have it easily install in chrome or chromium, that's limited.

Oddly enough, once RapidFlash has programmed it once, the ZTW spider ESC is then good to go and can be programmed with kkmulticopter. I did check the fuses and saw no difference before and after.

Workaround: Use portable chromium installs that won't update and hopefully won't break

Warning: Do not browse the internet in these ancient browser images.

I have tested both the windows portable install and the linux appimage, both give an older version of chromium that I expect won't break. I also cloned the repo in case that goes poof.

Final Approach: UsbASP programming

In the event that RapidFlash isn't working, or you won the unlottery and got an ESC with no bootloader, you can fall back to usbasp programming.

You'll need a USBasp programmer, they're pretty cheap thankfully, <10 dollars with shipping. Personally I've had success with the "HiLetgo 51" USBasp programmer on linux.

You can view the Atmega8 pinout here. Note the MOSI, MISO, RESET, SCK, and VCC/GND pins.

You can use a multimeter while the ESC is off to follow them to the pads (see image below).

Figure 4: What the pads on the Spider ESCs look like, and the SPIDER 40A ESC mapped.

Figure 5: Note that the 30A ESC looks to be verrryy similar, I'd double check, especially the VCC/GND pads, but I imagine it's the same. I can confirm MOSI is the same at least, and I'm holding a probe to it.

Fuses should be already set, (you can use avrdude to change them/make sure anyway), so you should be able to hook this directly up to a USBAsp programmer and use kkmulticopter to flash (selecting usbasp from the dropdown).

Wiring for Flyshot and Using

Congrats, you've flashed your ESC! Now you can use Flyshot to set your speed! If however, you want speed feedback, you'll need to make one last modification.

(And if you solely want to set the speed, and don't want a tach signal, you should probably consider this version with a form of error checking, although it's not as up to date. )

You need to get the MOSI pin out and available to your blaster control board.

Thankfully, that's easy.

Figure 6: 40A Pinout again, note the MOSI.

Figure 7: 30A Pinout again, the probe is over the MOSI pad.

Figure 8: Get access to the bottom pad.

Figure 9: Carefully tin said bottom pad.

Figure 10: Carefully strip some thin wire (I used 24 AWG), tin it, and then solder that to the pad.

Now add some kind of strain relief! You don't want to rip the pad off! You'll also want to cover up the exposed PCB somehow. I ran the wire along the body of the ESC and wrapped a bit of electrical tape along the bottom to serve as both strain relief and insulation.

I braided the tach wire into the existing signal wire braid, but any form of wire management works.

Figure 11: Cut the old ESC connector, get a new 3 pin female header, and solder the gnd, signal, and tach onto it. I prefer to keep tach in the middle.

If you want to use a different ZTW Spider ESC than a 30A/40A, you'll want to double check the MOSI pin. See the USBAsp section above for directions on how to do that. 


You know, I feel like I missed out on a chance to run my Spiderman themed blaster on Spider ESCs. Oh well....


My newest spiderman themed blaster is now running spider ESCs.

All is right with the world.

Spider 12A ESCs

These work just fine with flyshot, bs_nfet as expected.

Multimeter probe is over MOSI, otherwise treat the same as the 30A/40A spiders.

These would probably be pretty good for powering a small FTW style blaster, with tiny 1408 brushless motors.