In that case, can you post your config for the one with the issue?
This is interesting. Do you mean it always can’t find the card on the first boot after upload?
Otherwise, if it is randomly occurring over the course of several power cycles, I’m not sure how that can be distinguished as “after” since all of those events are chronologically “after”.
I do not think it has anything to do with the config:
#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 2
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define MY_LED_COUNT 85
#define CLASH_THRESHOLD_G 2.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define IDLE_OFF_TIME 60 * 1000 // 60 seconds
//#define SAVE_STATE
//#define ENABLE_DEBUG
#endif
#ifdef CONFIG_PRESETS
#define blade1Pin bladePin
typedef Rgb<255, 0,0> R99;
typedef Rgb<192, 0,0> R75;
typedef Rgb<128, 0,0> R50;
typedef Rgb< 64, 0,0> R25;
typedef Rgb< 24, 0,0> R12;
typedef Rgb< 0,255,0> G99;
typedef Rgb< 0,192,0> G75;
typedef Rgb< 0,128,0> G50;
typedef Rgb< 0, 64,0> G25;
typedef Rgb< 0, 32,0> G12;
typedef Rgb<255,255,0> Y99;
typedef Rgb<192,192,0> Y75;
typedef Rgb<128,128,0> Y50;
typedef Rgb< 64, 64,0> Y25;
typedef Rgb< 32, 32,0> Y12;
typedef Rgb<255, 97,0> O99;
typedef Rgb<192, 73,0> O75;
typedef Rgb<128, 48,0> O50;
typedef Rgb< 64, 24,0> O25;
typedef Rgb< 32, 12,0> O12;
typedef Rgb<255,150,0> TY99;
typedef Rgb<192,112,0> TY75;
typedef Rgb<153, 90,0> TY60;
typedef Rgb<128, 75,0> TY50;
typedef Rgb< 77, 45,0> TY30;
typedef Rgb< 64, 37,0> TY25;
typedef Rgb< 32, 18,0> TY12;
typedef Rgb<255, 60,0> TO99;
typedef Rgb<192, 45,0> TO75;
typedef Rgb<153, 36,0> TO60;
typedef Rgb<128, 30,0> TO50;
typedef Rgb< 77, 18,0> TO30;
typedef Rgb< 64, 15,0> TO25;
typedef Rgb< 32, 7,0> TO12;
typedef Rgb<100,255,0> L99;
typedef Rgb< 75,192,0> L75;
typedef Rgb< 50,128,0> L50;
typedef Rgb< 25, 64,0> L25;
typedef Rgb< 13, 32,0> L12;
template<class base_color,
class clash_color,
int out_millis,
int in_millis>
StyleAllocator StyleButtonPtr() {
typedef Layers<base_color,
SimpleClashL<clash_color>,
LockupL<AudioFlickerL<clash_color> >,
BlastL<clash_color> > Blade;
return StylePtr<InOutHelper<Blade, out_millis, in_millis> >();
}
#define BatteryStyle StyleNormalPtr<InOutHelperX<Gradient<R25,TO25,TY12,G25,G25>,BatteryLevel>,R25,500,800,R25,R25>()
#define m2Style(...) __VA_ARGS__
Preset presets[] = {
{ "SmthJedi", "tracks/mars.wav",
m2Style(
StyleNormalPtr< Sparkle<InOutTr<R99,TrColorCycle<900,0,600>,TrFade<500>>,AudioFlicker<R75,O99>,60>, Y99,900,800,Y99,Y99>()),
StyleButtonPtr<R25, Y99, 300, 800>(),
"Red"},
{ "TeensySF", "tracks/venus.wav",
m2Style(
StyleNormalPtr< Sparkle<G99,AudioFlicker<G75,L99>,50>, Y99,500,800,Y99,Y99>()),
StyleButtonPtr<G25, Y99, 300, 800>(),
"Green"},
{ "SmthGrey", "tracks/mercury.wav",
m2Style(
StyleNormalPtr< Sparkle<TO99,AudioFlicker<TO25,TY50>,50>, Y99,500,800,Y99,Y99 >()),
StyleButtonPtr<TO25, Y99, 300, 800>(),
"Orange"},
{ "SmthFuzz", "tracks/uranus.wav",
m2Style(
StyleNormalPtr< Sparkle<TY50,AudioFlicker<TY50,Y75>,50>, Y99,500,800,Y99,Y99 >()),
StyleButtonPtr<TY25, Y99, 300, 800>(),
"Yellow"},
{ "RgueCmdr", "tracks/venus.wav",
m2Style(
StyleNormalPtr< StaticFire<R99,G75,0,1,10,3000,0>, Y99,300,800,Y99,Y99>()),
StyleButtonPtr<Pulsing<R25,G25,3000>, Y99, 300, 800>(),
"green-pulse"},
{ "TthCrstl", "tracks/mars.wav",
m2Style(
StyleNormalPtr< StaticFire<R99,TY99,0,1,100,2000,1>, TY99,300,800,TY99,TY99>()),
StyleButtonPtr<Pulsing<R25,TY25,3000>, Y99, 300, 800>(),
"fire"},
{ "RgueCmdr", "tracks/venus.wav",
m2Style(
StyleNormalPtr<Gradient<G50,R99>,Y50,500,800,Y99,Y99>()),
StyleButtonPtr<Pulsing<R25,G25,3000>, Y99, 300, 800>(),
"Gradient"},
{ "battery", "tracks/uranus.wav",
m2Style(
StyleNormalPtr< InOutHelperX<Gradient<R50,TO50,TY25,G50,G50>, BatteryLevel>, R25,500,800,R25,R25 >()),
StyleButtonPtr<Y25, Y99, 300, 800>(),
"battery"}
};
BladeConfig blades[] = {
{ 0, WS281XBladePtr< MY_LED_COUNT, bladePin, Color8::GRB, PowerPINS<bladePowerPin2> >(),
SimpleBladePtr<CH1LED, CH2LED, CH3LED, NoLED, bladePowerPin1, bladePowerPin6, bladePowerPin5, -1>()
, CONFIGARRAY(presets) },
};
#endif
#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
#endif
I try this config on other boards, and it works fine. I suspect this one board has a hardware problem. It needs to be power cycled about 4 to 5 times before it boots correctly.
Well, that’s one way to do things. Unique config indeed.
Well my one repair that I was doing this morning had it happen 2-3 times before it settled. I was using 6.3 os, the SD card brand was Sandisk ultra (stock brand from Island Custom Sabers) using the Tekku brand board.
In short, CCSabers, KR Sabers/Saber Armory, SaberBay, Korbanth, Electronics123, one from Vader’s Vault during their sale. All bought between 2019-2022.
It always can’t find the card on the first boot after upload.
Do you have “Mass Storage” enabled in Tools > USB Type? If so, try without. Post config too.
I have it on all but 3 (10 sabers total). Those 3 and the ones with all have the same issue. Not gonna post all 10 configs but they all have this for the defines (with of course variances on blades, clash thresholds, and buttons):
#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 2
#define VOLUME 1800
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 4.5
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define COLOR_CHANGE_DIRECT
#define DISABLE_DIAGNOSTIC_COMMANDS
#define NO_REPEAT_RANDOM
#define FETT263_TWIST_ON
#define FETT263_TWIST_OFF
#define MOTION_TIMEOUT 60 * 15 * 1000
#define IDLE_OFF_TIME 5 * 60 * 1000
#define FETT263_MULTI_PHASE
#define SHARED_POWER_PINS
#define FETT263_EDIT_MODE_MENU
#define ENABLE_ALL_EDIT_OPTIONS
#define KEEP_SAVEFILES_WHEN_PROGRAMMING
#define FETT263_CLASH_STRENGTH_SOUND
#define FETT263_DUAL_MODE_SOUND
#define DISABLE_BASIC_PARSER_STYLES
#define FETT263_MAX_CLASH 16
#define FETT263_BM_CLASH_DETECT 7
#define FETT263_SAY_BATTERY_PERCENT
#define FETT263_SAY_COLOR_LIST
#define FETT263_SAY_COLOR_LIST_CC
#endif
#ifdef CONFIG_PROP
#include "../props/saber_fett263_buttons.h"
#endif
#ifdef CONFIG_PRESETS
----------------------------------------------------------------------------------------------------------------------------------
BladeConfig blades[] = {
{ 0, WS281XBladePtr<132, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
CONFIGARRAY(presets) },
};
#endif
#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
#endif
Am I understanding this right? You have 10 sabers with boards from all different vendors and timeframes that all have the “SD Not Found” occur every time you connect the saber to the computer and this only happens on OS6?
One here from Germany, too. First saber using OS6.7. Proffie is from Khal from UK, purchased in march, I tried 6 different SD-Cards - all SDHC as seen in the manuals. I played around with 5.9 and older, but it really looks like its only on OS6. I have the latest plugin.
SD-Card not found error at every 2nd - 5th boot of the saber. All config options and tests from this thread were tested…
@Fett263 - yes sir. We all have different boards - and it looks like a mystery in OS6, not the hardware.
@Fett263 - I have to add, it is not everything I connect to Computer, for me it is on boot/power on time. So if the saber reacts to connect/disconnect at computer it is similar, but not real computer related. I was about to desolaterer everything at first… currently I use a killswitch at charge port - on/off/on … 2-5 times until it comes up right.
Given some of the earlier user’s experiences in this thread when using identical configs on different physical boards from the same run and attempting to swap SD cards between them I still think it is somewhat hardware related, but if it goes away with OS5 then it’s a combination of something with the hardware AND something in the software. I still have never run into this on any of my sabers at any point during development, Alpha, Beta or current version so there is probably some combination of hardware and software (and maybe computer) working together to cause.
OK we need to start eliminating variables.
@Bruinrogue @hal314 @Sabersense @Dalesabers and anyone else who has run into this.
What happens if you upload a config from OS5 with OS6?
So don’t use any defines or styles for OS6, just a straight OS5 config that doesn’t cause this error when used in OS5 (if you have this happen in OS5 please report as well). Does it still occur?
And just to see if there’s anything else contributing, what computer OS and Arduino version are you running?
I’ve tried with an older board from KRSabers that had 5.9 settings and tried with 6.3 and didn’t see anything with it.
I tried comparing 6.3 and 6.4, but I didn’t see anything that can affect SD cards.
If 6.3 truly works, can we also try 6.4, 6.5, 6.6 and 6.7 to get a better idea of when the problem started?
Yessir. A growing collection haha. I have an 11th in today from Vaders Vault with a Proffie but waiting on them to send me the config file so I can test properly.
No errors with a straight OS5.7 or 5.9 config (both with mass storage and no mass storage).
I’ve tried a Windows 11+Arduino 1.8.19 (main PC), MacOS 15.4 beta+1.8.19 (Macbook Pro), and for kicks, my work PC which is Windows 10+Arduino 1.8.13.
Ok, so OS6 with an OS5 config doesn’t have this issue, that’s a step forward.
Let’s see if we can narrow down what define(s) or styles trigger.
Can you post the top section of an OS5 config you tested (including CONFIG_PROP if you had one)? I want to have you try a few defines one at a time to see if we can isolate what might be triggering.
My money is still on DYNAMIC_CLASH_THRESHOLD for some reason.
Not sure how that would affect or be any different from any of the other CONFIG_VARIABLE functions. It just reads the .ini value, if present, like all of the others.