Puffin Firmware V1.30 beta D (5/20/2021)

This will probably the final Beta update and 100% equivalent to the Summer 2021 official release. Before you update, be sure to write down your cartridge logged hours or they will be lost.

If you find any "beta bugs" please contact me via email with your Puffin settings and a description of the bug when you encounter one. You can just use the Contact Us form as I get these immediately and can track things much easier than via Facebook. Thank you so much and hope you enjoy the new features!

Beta D notes:
I streamlined the clip reset functionality, so now a press of Select on the Gain menu immediately clears the clip indicator as well as the clip count from the levels menu. It's effectively a double-tap, as you press Select to clear and then a second time to exit the Gain function. This clip reset also occurs when changing the Gain (as it has been behaving) as well as when clearing the clip count when on the levels screen. Trying to not exasperate folks with clip indications - just lower gain if you are getting a constant stream of clips and happily ignore it if it's just from needle drops or scratches. Also corrected a bug in the new Grade pause function where the timer did pause correctly, but if the record was still playing and Magic was on, then the defect counter was still active. I missed this as I was always stopping my turntable when pausing.


V1.30 Beta D Changes (5/20/2021):

  • Improved clip reset functionality
  • Fixed Grade pause bug


    Beta B and Beta C notes:
    Discovered a bug that dates back to V1.00 of the Puffin code where the LCD gets blasted with data before initialized from a timer interrupt. This remained hidden until V1.30 when this bug could manifest itself as an incorrect ASCII character or two in the "Volume" entry at power up. But the error would disappear after use and didn't affect operation. I cut an internal release to ship this code for one customer, but discovered another bug a couple days later (thank you Mark!) that sometimes garbled the Lo filter selections. Also correct a minor bug that didn't increment the hours exactly on the cart timer edit function. This was a remnant from some earlier code and required a simple fix.


    V1.30 Beta C Changes (3/26/2021):

  • Fixed Lo filter selection bug (caused by Skate menu item text overflow)
  • Adding or removing hours from cart timer adjusts in one hour increments (had truncation due to earlier code settings that were no longer used)


    V1.30 Beta B Changes (3/23/2021) - NOT PUBLICLY RELEASED:

  • Fixed LCD initial power up refresh bug (could garble part of "Volume" entry)


    V1.30 Beta A Changes (3/1/2021):

  • Added cartridge timer that logs hrs:min:sec of your cart's actual playing time to 10000 hours (saved to memory when: 1) turned off with standby, or 2) Set? is selected)
  • Added Easy menu functionality to just have your most used functions on a shorter menu list
  • Added a millisecond counter to Select button presses:
             - Pressing for 1 second pushes a copy of the control onto the Easy menu while in Full menu (small period -> large period)
             - Pressing for 1 second pops a copy of the control off the Easy menu while in Full menu (large period -> small period)
             - Pressing for 1 second pops a copy of the control off the Easy menu while in Easy menu
             - Pressing for 1 second during Grade process pauses the Grade process
             - Pressing for 10 seconds on Cart timer selection resets Cart timer to OFF
  • Renamed Tilt to Warmth and inverted the controls (e.g. Tilt -3 is now Warmth +3)
  • Added collapsible Test menu:
             - added 33, 45, and 78 RPM turntable speed checkers with +/-0.01% accuracy
             - added Azimuth function that measures channel separation with test LP track
             - added Sweep function that measures frequency and relative level with test LP track
             - added Skate function that measures channel distortion with test LP tracks
             - moved FineBaL (fine balance) to Test menu and can monitor and adjust this offset in 0.1dB increments directly
  • Modified clip detection:
             - input (ADC) clip appears in Gain display with arrow into asterisk ->*
                      - indicates Gain should be adjusted lower
                      - number of input (ADC) clip events shown in levels display
             - output (DAC) clip appears in Gain display with arrow out of asterisk *->
                      - indicates Gain should be adjusted lower if >10 clips per session, otherwise just handling needle drops, bad pops, etc.
                      - number of output (DAC) clip events shown in levels display
             - adjusting Gain resets all these detections
  • Modified Gain to be in 1dB increments (was 4dB steps) - still has muting between changes to prevent thumps in analog circuit settling
  • Modified Out menu to: Analog or 24/48 (pre-SN1020) and Analog, 24/48, or 24/96 (post-SN1020) - helps support older DACs
  • Fixed bug as Phase:Invert did not work (no functionality) and this bug crept in at either V1.10 or V1.20
  • Rewrote the entire LCD screen refresh code in order to display less artifacts and flicker on levels and animation screens
  • Rewrote the "A av" and "D av" level averaging functions so now True RMS instead of quasi-peak average

    For the cartridge timer, use "Cart log" (item #23 on the menu). Once you select it, the timer becomes active and will log time whenever you are playing a record - you needn't mess with it again. Total hours will also be shown on the Puffin's splash screen at turn on, too. There's a bit of a detection scheme and moving coil users should use 200 ohm loading for best detection. If you select the timer when it is active, a cursor will appear in the hours column permitting you to quickly edit the total hours. You might do this to either reset to zero (CW turn with knob) or to add hours for a cart you've already logged (CCW turn). Also useful for adding an hour profile after re-flashing your Puffin (as flash contents are erased), so be sure to write down your logged time before doing firmware updates. Also, if you press select accidentally and don't mean to edit the time, just press select again. For a full time reset, hold the select button for 10 seconds. Note: Preset default loads (i.e. MM and MC) will wipe out all current settings including the logged cart time. I *think* this makes most sense, but may change this. Definitely don't want folks to accidently wipe their logged hours.

    The Easy menu (selected via item #21 on the menu) is just an abbreviated version of the main menu but just with controls that you personally use. You can customize it as you like. When on the Full menu (traditional Puffin main menu), you'll notice the item number and a period. The period can now be a large period or a small period which act as identifiers whether the item is on the Easy menu or not. Large period means the function resides on both the Easy and Full menu, and small period means the function is only on the Full menu. Hold the select button for 1 second to toggle the period size, thus deciding if the function is on the Easy menu or not. When on the Easy menu you can also press the select button for 1 second to "pop it off" the menu. Note: 1) the Test menu and it's functions can't be put on the Easy menu, 2) the Menu function can't be removed from the Easy menu, and 3) if the Grade function is actively grading, the 1 second press pauses the grading so it must be non-active to alter its menu status.

    Renaming Tilt to Warmth was something I had wrestled with even before the Puffin's launch back in 2018. I'm greatly influenced by Don Norman's The Design of Everyday Things and believe controls must be intuitive. Tilt isn't an intuitive control name - though truly descriptive of the actual filter and known in the audio realm by some. Meanwhile Warmth tells us a bit more about itself and intuitively a higher value will be "more warm". But the functionality is the same other than it is inverted form the previous Tilt settings (e.g. Tilt -3 is now Warmth +3).

    The new Test function is a collapsible menu with some handy functions (item #24 on the menu).

    - The three RPM controls are fast and accurate: just select while playing in a runout groove and it measures the distance from click-to-click using the Puffin's 50 ppm oscillator. With an auto return turntable that can't use the runout, use a record with a bad scratch instead. I typically check it three times to make sure I get good, consistent readings. 33 and 45 RPM mode will show speed deviation in tenths of a percent. Meanwhile 78 RPM mode will show actual RPM (to hundredths) in order to fully support all the different standards, e.g. 78.26 is the US standard. I do recommended using LPs even for 45 and 78 rpm measurements. It is possible that some records may not give good results (not enough runout click), but I think the vast majority of LP runouts will work well.

    - There's now a dedicated Azimuth control that shows the separation the Left and Right channels have from each other. The Ultimate Analogue Test LP and the Ortofon Test LP both have very good azimuth tracks (one channel has 1kHz signal and the other channel is silent). Try to get these as values high and balanced as possibly. I no longer recommend the old "null method" due to cartridge and LP channel imbalance.

    - Another new test function is Sweep. It measures the frequency and relative level of signals from a test record, so it's perfect for you to see the frequency response of your cartridge. Usually the test LPs start with a reference 1kHz signal, so you start Sweep once that begins and it makes that the reference level (e.g. "1000 Hz +0.0 dB") to calculate all the others (e.g. "5000 Hz -1.1 dB"). The slower the sweep the better. The Ortofon Test LP sweep is pretty quick and heavily weighted towards the high frequencies, so less useful. Meanwhile the Vinyl:Check seems a very good one. All the filters are functioning, so EQ:Line In or EQ:Phono affect the results (some records want one or the other). Also, you'll adjust your Hi and Lo filters if looking at the extremes of frequency response (less than 50Hz and higher than 15kHz). Note: you'll be surprised at the response of your cartridge and actual test LP error is a bit of an unknown variable.

    - The Skate measurement helps adjust the anti-skating on your turntable. Works with the 300/315Hz tracking test on LPs like Ortofon Test (Tracks 9 to 14) and Vinyl:Check (Side 1 Track 6). Shows which channel - right or left - starts to distort first and whether to add ('+' symbol pops up) or remove ('-' symbol pops up) skating force. In my limited testing, this distortion really only shows up at the very end of the tracks. This function is a high pass filter beyond the fundamental frequency and you can select common test LP frequencies, like 1kHz, and then read the residual THD+N in dBFS. So it may be useful for some type of VTA adjustment or other experiments, too.

    - FineBaL lets you balance the channel levels. Typical error here (in descending order): 1) cartridge imbalance, 2) record imbalance, and 3) Puffin imbalance. I plan to document a good method to evaluate these errors.








    How to Update the Puffin's Firmware

    Using the supplied allen key and USB cable, the Puffin can be updated via an internal micro USB header with either a Windows or macOS system. Note that updating your firmware will erase old settings saved in the Puffin's memory, so write down any current settings that may help you set up after flashing the new firmware.


    Windows Method:

    Note: Skip step 2 for recurring firmware updates (i.e. you only do this step once).

    1. Download and unzip the latest Puffin firmware (check your serial number under unit): Firmware V1.30 beta D for serial number 1019 and earlier      OR      Firmware V1.30 beta D for serial number 1020 and later (or clock upgraded older units)

    2. Download and unzip puffin.zip from the website: http://www.parksaudiollc.com/puffin.zip
    3. Then unzip puffin.zip and run "STM32 ST-LINK Utility v4.2.0 setup". This installs the programming software in your program list and also loads the USB driver.

    4. Unscrew the four corner screws on the Puffin top plate. This requires a 5/64" Hex Driver or Allen Wrench (supplied with Puffin).
    5. Connect USB cable (supplied with Puffin) to Windows computer. Connect USB-Micro connector to Puffin board - connector has sticker marked L432KC. No power is needed as it is powered via USB. Note: if you cannot connect to the processor, you are likely using a USB cable meant to provide power only, so dig out the supplied cable if having issues.
    6. Run the STM32 ST-LINK Utility from your program list or Desktop shortcut (ie the program, not the installer again).
      1. Select Target>Erase Chip.
      2. Select Target>Program & Verify...
      3. If this is the first time you've run this utility, then an 'Open' window will pop up for you to select "V130betaD.hex" (located in Downloads folder or where unzipped). Otherwise choose the Browse button to select "V130betaD.hex" (located in Downloads folder or where unzipped).
      4. After you've selected the new .hex file, the press the Start button (located beside the Cancel button in the pop up window).
    7. The Puffin has been upgraded after "Verification...OK". The green LED will continue to blink, but programming is finished and disconnecting the USB cable is OK. You'll need to disconnect all power (USB as well as the 12V DC if you had it plugged in) to exit programming mode as the power button will not turn the unit on while in programming mode. Place the Puffin back into the chassis and you can then verify that the firmware flashed correctly by plugging in the 12V DC power and noting the firmware splash screen at startup. Then disconnect the 12V DC power and screw in the four main screws.

    macOS (10.11 & higher) Method:

    Important: Skip steps 3 and 4 for recurring firmware updates (i.e. you only do these steps once).

    1. Download and unzip the latest Puffin firmware (check your serial number under unit): Firmware V1.30 beta D for serial number 1019 and earlier      OR      Firmware V1.30 beta D for serial number 1020 and later (or clock upgraded older units)

    2. Start the Terminal app using either of the following methods:
           a. Press Command+Space and type Terminal and press return key.
           or
           b. Finder>Applications>Utilities>Terminal. Double-click on Terminal.

    3. Cut-n-paste (Command+C then Command+V) the following highlighted text into the Terminal app:
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      and press return key.
      If the screen prompts you to enter a password, please enter your Mac's user password to continue. When you type the password, it won't be displayed on screen, so just type your password and press return key. Then wait for the command to finish.
      This step installs Homebrew: a macOS installer package. This permits loading the update software and USB drivers in the next step.

    4. Cut-n-paste the following and run in the Terminal app:
      brew install stlink
    5. Unscrew the four corner screws on the Puffin top plate. This requires a 5/64" Hex Driver or Allen Wrench (supplied with Puffin).
    6. Connect USB cable (supplied with Puffin) to Mac. Connect USB-Micro connector to Puffin board - connector has sticker marked L432KC. No power is needed as it is powered via USB. Note: if you cannot connect to the processor, you are likely using a USB cable meant to provide power only, so dig out the supplied cable if having issues.
    7. Cut-n-paste the following text and run in the Terminal app (note: change the word Downloads to Documents or Desktop if you moved the hex file after downloading.:
      st-flash --format ihex write ~/Downloads/V130betaD.hex

    8. The software should say "Flash written and verified! jolly good!" if the Puffin has been upgraded. You'll need to disconnect all power (USB as well as the 12V DC if you had it plugged in) to exit programming mode as the power button will not turn the unit on while in programming mode. Place the Puffin back into the chassis and you can then verify that the firmware flashed correctly by plugging in the 12V DC power and noting the firmware splash screen at startup. Then disconnect the 12V DC power and screw in the four main screws.








    Rev history:

    V1.00
    5/16/2018
    Initial release. SP

    V1.01
    6/8/2018
    Added flash saves at Set?>OFF, Set?>LOAD, Set?>SAVE, and main menu Gain change. Moved phase polarity to pre-DSP so we can get 2H cancellation. SP

    V1.02
    6/15/2018
    Fixed Load setting bug where 200 ohms setting could be overwritten to 47k. SP

    V1.03
    8/25/2018
    Screen refresh timer was active during standby sleep. Would cause faint flicker on LCD if Puffin turned off with main menu set to Set? or Signal Levels. SP 

    V1.04
    2/11/2019
    Added immunity to static electricity discharge that could put unit into Standby state. SP

    V1.10
    8/18/2019
    Changes:
    -Added adjustable RIAA eq function
    -Added adaptive Bass Boost
    -Added Pink Noise for Room EQ
    -Added Null to Phase controls
    -DSP code re-written for speed in assembly SP

    V1.11
    8/29/2019
    Fixed Tube 2H function. Right channel had bug which could add extra non-2nd harmonic distortion. SP

    V1.13
    4/18/2020
    Saved FPU registers to stack during DSP interrupt that could have caused "no sound from Puffin" when adjusting menu.
    Adjusted Tube 2H and Tape 3H constants for much less distortion. SP

    V1.20
    5/26/2020
    Changes:
    -Added Magic pop and click minimizer
    -Added Grade which is a record grading function
    -Added DeRumble
    -Added RoomEQ
    -Added new clip alerts with asterisk * at
    Volume (output/DAC clip) & Gain (input/ADC clip)
    -Changed TF to fx: think Effects or f(x)
    -Lowered 2H Tube distortion (7%THD at full signal)
    -Fixed 3H Tape distortion (3.5%THD at full signal)
    -Removed 2H&3H from fx
    -Added Out function & merged with SPDIF branch
    but Out:SPDIF is disabled on non-modded Puffins
    -Fixed FPU memory stack bug
    -General bug fixes and tweaks
    -Added many new Lo filters SP

    V1.21
    8/3/2020
    Changes:
    Bug fix for digital output SPDIF (analog users unaffected). Memory alignment issue dropped 25% of Magic corrections. SP