FV1 dev board build - first build!


New member
This is my first foray into pedal building. I thought I'd share my experience and some of the challenges I came across in hopes of helping others :)

I got the FV1 Dev Board with pre-soldered FV1 and CH341 ICs. The build went well with just a couple hiccups:
- I tried the build initially using film caps wherever possible (just what I happened to order, no real preference), and some of the bigger ones didn't fit. Searching around I found plenty of examples of others having the same issue, and replacement MLCC/ceramic caps are doing the job just fine.
- I initially soldered the switch onto the wrong side - beginner mistake, and easily enough to resolve!
- I soldered all passives first, then ran into clearance issues with the TL074 IC and the diode/resistor at each end. It /just/ had enough clearance to make good electrical contact, so no biggie.
- I'm sure I could make things much cleaner, but it works (no need for pictures of this one, haha).

Everything came together fine, but when I went to use it none of the patches seemed to work - I saw other posts with "no wet signal" issues, but none of the resolutions on those threads seemed to apply. What I finally figured out (much later) was that I had accidentally purchased an "ON/ON" switch instead of "ON/OFF/ON", meaning I had no way to select program slot 0 on the eeprom, only slots 1 and 2. I worked around this in software once I figured out what was going on (by shifting programs into slot 1 - see script below for one way of doing it [edit: the asfv1 -p "target program number" option is another way to do this]).

On the software side, I use linux on my laptop and had no interest in carrying the pedal to my windows desktop every time I wanted to program it, which ended up being another fun constraint to work around:
- getting SpinCAD Designer working on my laptop took a little tweaking. Because I use XMonad as a window manager, I needed to start it with an environment variable set for compatibility:
_JAVA_AWT_WM_NONREPARENTING=1 java -jar SpinCAD-Designer-build-1032.jar &

- I got tired of running a bunch of commands in sequence to convert from hex to bin then flash, so put together a helper script that includes my temporary hack to account for no program slot 0
$ cat ~/bin/flash_fv1_bin.sh


if [[ -z $hexfile ]]; then
  echo "No input file specified."
  exit 1

# Convert input hexfile into binary
srec_cat "$hexfile" -intel -o /tmp/fv1_tmp.bin -binary

# Shift content of hexfile forward 64 bytes (shift content of slot 0 into slot 1)
xxd /tmp/fv1_tmp.bin | xxd -r -s 512 > /tmp/fv1_tmp2.bin

# Flash resulting binary to EEPROM
if [[ -f $binfile ]]; then
  ch341eeprom -w $binfile -s 24c32
  if [[ $? -ne 0 ]]; then
     echo "Failed to write EEPROM."
     exit 1
  exit 0
  echo "Bad input file."
  exit 1

- using asfv1 to assemble programs found on mstratman's fv1 program repository got me started, but I found a number of programs that wouldn't assemble. Tonight I went through and took a stab at fixing some of the common assembly errors I ran into. This removes a decently large barrier to experimentation. [edit to add: passing the "-s" SpinASM compatibility flag to asfv1 trivially resolves a number of issues with programs. in contrast I found the clamping flag (-c) to result in broken programs, and one of the issues resolved by the PR I sent is what looks like erroneous bounds checking.]

Time to play!
Last edited: