No Teensy boards were found

Status
Not open for further replies.

MartyMcFly

New member
Hi All.

Newby to Teensy here.

I'm trying to create a Midi interface for an old Organ Pedalboard, using code from this project. https://github.com/Daddoon/PedalBoardToMidi

I am running Teensyduino 1.55 on an older MacBook pro, with Mojave 10.14.1.

Originally I had problems compiling, but after adding in the Bounce2.h, there was no compile errors. Next I kept getting a 'No Teensy boards were found...' error. Pressing the button on the Teensy 3.5 stopped the flashing light, but the board was not detected by the Teensy Loader.

I found a suggestion that I should use Terminal to remove a usbserial.kext (rm -rf /Library/Extensions/usbserial.kext). I did this and the compile seemed to work.

The Teensy loader momentarily popped up showing the Teensy 3.5, but then reverted to asking that I press the button on the Teensy again. At the same time, my mac popped up a message saying a new device (MFPedalboard) had been detected and I needed to set it up, but inside the system preferences, it seemed to appear as a modem, asking for phone numbers etc.

Since then I have not been able to compile again and just get the above mentioned 'No Teensy boards were found'

The above mentioned extensions folder has a bunch of different USB things in it. I'm wandering if there's something on this mace that is highjacking the USB ports.

I've deleted the MFPedalboard object from system preferences.

Screen Shot 2021-10-30 at 10.23.43 AM.png

Screen Shot 2021-10-30 at 10.22.21 AM.png

#include <Bounce2.h>

//#include <Bounce2/Bounce2.h>

void PinOutput(int pinNb, int pinValue)
{
Serial5.print("Pin: ");
Serial5.print(pinNb);
Serial5.print(", Value: ");
Serial5.println(pinValue);
}

struct KeyNote
{
int pin; //pin number on Teensy card
int value; //Note value in Midi
Bounce button; //Bounce instanciated button
};

const int channel = 1;
const int debounceTime = 5;
const int noteOn = 99;
const int noteOff = 0;
const int nbKeys = 32;

KeyNote keys[] = {
{ 0, 60 }, //Key 1, Note value => 60 (C4)
{ 1, 61 }, //Key 2
{ 2, 62 }, //Key 3
{ 3, 63 }, //Key 4
{ 4, 64 }, //Key 5
{ 5, 65 }, //Key 6
{ 6, 66 }, //Key 7
{ 7, 67 }, //Key 8
{ 8, 68 }, //Key 9
{ 9, 69 }, //Key 10
{ 10, 70 }, //Key 11
{ 11, 71 }, //Key 12
{ 12, 72 }, //Key 13
{ 32, 73 }, //Key 14 //NOTE: Using Pin 32 instead of Pin 13, because LED is interupting normal signals
{ 14, 74 }, //Key 15
{ 15, 75 }, //Key 16
{ 16, 76 }, //Key 17
{ 17, 77 }, //Key 18
{ 18, 78 }, //Key 19
{ 19, 79 }, //Key 20
{ 20, 80 }, //Key 21
{ 21, 81 }, //Key 22
{ 22, 82 }, //Key 23
{ 23, 83 }, //Key 24
{ 24, 84 }, //Key 25
{ 25, 85 }, //Key 26
{ 26, 86 }, //Key 27
{ 27, 87 }, //Key 28
{ 28, 88 }, //Key 29
{ 29, 89 }, //Key 30
{ 30, 90 }, //Key 31
{ 31, 91 } //Key 32
};

void BounceSetup()
{
int i = 0;
while (i < nbKeys)
{
keys.button = Bounce(keys.pin, debounceTime);
i++;
}
}

void PullUpSetup()
{
int i = 0;
while (i < nbKeys)
{
pinMode(keys.pin, INPUT_PULLUP);
i++;
}
}

void setup()
{
/*Serial5.begin(9600);*/
// Setup the button
///pinMode( inputPin ,INPUT);

// Activate internal pull-up (optional)
///digitalWrite( inputPin ,HIGH);

// After setting up the button, setup the object
///bouncer .attach( inputPin );
///bouncer .interval(5);

BounceSetup();
PullUpSetup();
}

void UpdateKeys()
{
int i = 0;
while (i < nbKeys)
{
keys.button.update();
i++;
}
}

void SendNoteOn()
{
int i = 0;
while (i < nbKeys)
{
// Note On messages when each button is pressed
if (keys.button.fallingEdge()) {
usbMIDI.sendNoteOn(keys.value, noteOn, channel);

//Debug only
/*PinOutput(keys.pin, keys.value);*/
}

i++;
}
}

void SendNoteOff()
{
int i = 0;
while (i < nbKeys)
{
// Note Off messages when each button is released
if (keys.button.risingEdge()) {
usbMIDI.sendNoteOn(keys.value, noteOff, channel);
}

i++;
}
}

void DiscardAllInputs()
{
// MIDI Controllers should discard incoming MIDI messages.
while (usbMIDI.read()) {
}
}

void loop()
{
UpdateKeys();

SendNoteOn();
SendNoteOff();

DiscardAllInputs();
}

// a .cpp file or your main sketch (the .ino file).

#include <usb_names.h>

// Edit these lines to create your own name. The length must
// match the number of characters in your custom name.

#define MIDI_NAME {'M','F',' ','P','e','d','a','l','b','o','a','r','d'}
#define MIDI_NAME_LEN 13

// Do not change this part. This exact format is required by USB.

struct usb_string_descriptor_struct usb_string_product_name = {
2 + MIDI_NAME_LEN * 2,
3,
MIDI_NAME
};
 
Should work without any added drivers ... don't use mac - but never seen any mention of one as Teensy USB support is designed using real USB hardware. Especially after a button push it becomes a HID device.

The most common problem is a charge only cable - or a bad cable.
 
You should not ever need to mess with kext files for Teensy.

Teensy uses only the drivers Apple provides in every version of MacOS since 10.5 (Leopard) - back in the days when Apple named each release after a big cat.

For troubleshooting, I'd recommend keeping the small Teensy Loader window visible. Turn off its "Auto" mode, so it won't immediately reprogram and reboot your Teensy. Then press the button on Teensy. If the USB is working, Teensy Loader should detect the hardware.

Do this first, just to make sure you have good USB and all the problems aren't something "simple" like a flaky cable.
 
Thanks Guys.

I've read on the forums that Teensy only uses the drivers that apple supplies, so I was curious why that video wanted to show people how to add the CH340 driver. I haven't done that.

I don't think it's a cable problem. I've tried multiple cables and, did get it to momentarily recognize the board, even had the Mac OS say there was a new peripheral, but as mentioned, that was only very quickly. As quick as the Teensy Loader showed the board, it also went back to the request to press the button.

I've tried multiple times to press the button, with Auto on the loader turned off and no joy. I've also rebooted the mac multiple times and done the same, but still no teensy board found.

I have seen some threads with similar issues on a mac, but after reading through them, I'm no closer to a resolution.

I also just upgraded to Montery, still the same problem.
 
As quick as the Teensy Loader showed the board, it also went back to the request to press the button

This is normal behavior when Teensy Loader is set to Auto mode.

Auto mode means Teensy Loader will immediately reprogram your Teensy and cause it to reboot to run the new code. Every time you click Verify or Upload in Arduino, it gets automatically put into Auto mode, because that's how Arduino does the code upload to Teensy. It sets Auto mode, then asks Teensy to go into programming mode, and then the moment Teensy Loader see it appear, code is loaded.

So for troubleshooting, turn off Auto mode. If you try to compile in Arduino, remember it will turn Auto mode back on.
 
Now if Teensy Loader isn't responding at all after you press the button, and you're sure the USB cable and any hubs between your Mac and that cable are all good (bad cables are by far the most common problem), the next step is to use a voltmeter to check that your Teensy has proper power.

Set the meter to DC volts. First measure between GND and VIN. This should be connected to power from the USB cable, so you should see approx 5 volts.

Next measure between GND and 3.3V. Touch GND near the USB connector, and 3.3V which is between Analog GND and pin 23. Obviously you're supposed to measure approx 3.3V. If your Teensy has suffered catastrophic damage, you'll probably measure something between 0.5 to 0.9V. If you measure only a few millivolts, that's a strong sign solder or something else metallic is shorting out the power (and usually those problems are fixable when the stray metal object is found and removed).

If you measure 3.3V, then inspect the USB connector. Use a magnifier and bright light, if you can. Physical damage to the connector can manifest the same as bad cables (again, by far the most common issue) and usually connector damage is visible.


If all those tests are good, then it's time to try a different computer and use a known-good cable. Teensy can use many different USB protocols, which you can see if you click Tools > USB Type. But after you have pressed the button, Teensy will always use HID protocol. All operating systems always have HID drivers, because HID is the protocol your keyboard and mouse use. On MacOS and Windows, Teensy Loader should always be able to detect when the HID-based Teensy bootloader appears. (on Linux, a special config file is needed)

I know you will find a *lot* of info online about serial drivers. Ignore all that stuff. After you press the button on Teensy, it uses HID protocol, which is always supported by all operating systems.
 
Teensy Loader has : Help / Verbose

When Auto mode is ON or OFF that added verbose window will update with Button pushes or other Teensy comings and goings.
 
I've. Looked at everything suggested above and tried known data cables and another MacBook. Problem still exists. The board is not being detected on any USB ports.

The verbos mode is only available for compiling and uploading via the preferences. I turned that on and it's showing no major problems.

Finally I looked closely at the board. It looks like one part has a nasty blob of solder. See attached. I'm wandering if that might be the prob. I've reached out to the company that sold it to me to see if they can replace it.

CBAC599F-7D9E-425D-BCBE-BCB6243C7477.jpg
 
That is on one of the USB data lines' series resistors so that could explain it. Will have to be careful removing it if you try...
 
Status
Not open for further replies.
Back
Top