joulupukki
Active member
We recently figured out something that improves tuning stability, and I wanted to give you the backstory, in case you're curious. More importantly, it changes which pin we recommend for the audio input to Q-Tune. I've posted the 5.1.2 release notes in the firmware thread. This is for anyone who wants to know the why.
The short version: we're moving the guitar signal from GPIO 18 to GPIO 10 (the pin labeled SCL on the screen's board). It's more reliable, and it fixes a small number of screens that wouldn't tune no matter what we tried.
Now the long version…
When we first started building Q-Tune with the Waveshare 2.8" screen, the trickiest part was figuring out which pins were actually free for us to use. We had to have a free pin for each relay, one for reading the incoming guitar signal, and one for the foot switch. A lot of the obvious pins were already spoken for by the Waveshare dev board.
Waveshare's documentation lists GPIO 10 as not available, because it's the serial clock line (SCL) pin for I2C (2-wire device communication). I trusted the documentation and didn't give it a second thought. But, I've now realized that we don't actually use I2C to communicate with other devices and so that pin has been available this whole time.
GPIO 18, on the other hand, is documented by Waveshare as being available for use and so that's what we used. It's part of ADC2 (the 2nd ADC unit on ESP32-S3) and allows for continuous sampling of the incoming voltage (perfect for reading frequency info from a guitar). The only problem is that Espressif, the manufacturer of the ESP32-S3, published an errata about continuous reading of ADC2 not always working.
In all of our early tests, every single board we tried worked great with GPIO 18 (and still continues to). It wasn't until the last month or two that we started seeing issues with tuning not working, despite everything else testing out perfectly.
Because the ADC2 quirk varies enough from chip to chip, we're now doing two things:
If you've already built the thru-hole version and want to switch to GPIO 10 it's an easy swap. On the Q-Tune PCB, just swap the two wires between GPIO 10 and GPIO 18 (pins #7 and #11 on the solder pads – the brown and purple wires). You can double-check the labels on the screen's PCB to make sure you're swapping the right ones (labeled "IO 18" and "SCL"). Then, with Firmware 5.1.2 or newer, go into Settings > Advanced > Signal GPIO and select GPIO 10.
I've also updated our documentation to recommend GPIO 10, and once we sell through the current run of PCBs, we'll order a batch with the pad labeled properly.
I'm happy to answer questions or go deeper on any of it. You all have been great about digging into this stuff with us. Kudos to those of you who were affected by this and had the patience for us to figure out a solution!
Stay tuned!
Boyd
The short version: we're moving the guitar signal from GPIO 18 to GPIO 10 (the pin labeled SCL on the screen's board). It's more reliable, and it fixes a small number of screens that wouldn't tune no matter what we tried.
Now the long version…
When we first started building Q-Tune with the Waveshare 2.8" screen, the trickiest part was figuring out which pins were actually free for us to use. We had to have a free pin for each relay, one for reading the incoming guitar signal, and one for the foot switch. A lot of the obvious pins were already spoken for by the Waveshare dev board.
Waveshare's documentation lists GPIO 10 as not available, because it's the serial clock line (SCL) pin for I2C (2-wire device communication). I trusted the documentation and didn't give it a second thought. But, I've now realized that we don't actually use I2C to communicate with other devices and so that pin has been available this whole time.
GPIO 18, on the other hand, is documented by Waveshare as being available for use and so that's what we used. It's part of ADC2 (the 2nd ADC unit on ESP32-S3) and allows for continuous sampling of the incoming voltage (perfect for reading frequency info from a guitar). The only problem is that Espressif, the manufacturer of the ESP32-S3, published an errata about continuous reading of ADC2 not always working.
In all of our early tests, every single board we tried worked great with GPIO 18 (and still continues to). It wasn't until the last month or two that we started seeing issues with tuning not working, despite everything else testing out perfectly.
Because the ADC2 quirk varies enough from chip to chip, we're now doing two things:
- We recommend using GPIO 10 (SCL) for all new builds (resides on ADC1 and doesn't have the ADC2 problem)
- We're testing every single screen and cable before we ship kits
If you've already built the thru-hole version and want to switch to GPIO 10 it's an easy swap. On the Q-Tune PCB, just swap the two wires between GPIO 10 and GPIO 18 (pins #7 and #11 on the solder pads – the brown and purple wires). You can double-check the labels on the screen's PCB to make sure you're swapping the right ones (labeled "IO 18" and "SCL"). Then, with Firmware 5.1.2 or newer, go into Settings > Advanced > Signal GPIO and select GPIO 10.
I've also updated our documentation to recommend GPIO 10, and once we sell through the current run of PCBs, we'll order a batch with the pad labeled properly.
I'm happy to answer questions or go deeper on any of it. You all have been great about digging into this stuff with us. Kudos to those of you who were affected by this and had the patience for us to figure out a solution!
Stay tuned!
Boyd