Jump to content

[SOLVED] Debugging my MB-6582 - Part 2 - Software upload issue


Recommended Posts

Hi again,


thanks to Ilmenator and Shuriken my silly hardware issue is now resolved.  The second thing is a software issue.  The MB-6582 has all four cores stuffed but only 1 & 2 have SID's (8580's)


I managed to upload the setup_mb6582.hex package to the first core, which is now in perfect working order.  Reading thru the forum, I found that I must clone the firmware to the other cores (press menu on power up). It starts the cloning sequence and says on the LCD:

Cloning Slave 01
Address: 0


Cloning Slave 02
Address: 0d   !!!!


Cloning Slave 03
Address: 0d   !!!!

and finally

Cloning slave 03
!!!!! FAILED !!!!!

And then reboots. SID 1 is still working properly, but pressing SID2-3-4 buttons gives:

SID2 not available 
(CAN Bus Errors)


I've tried several times now with identical results. Am I missing some info or is there a problem with my box?  Thanks for your clues..

Edited by EsotericLabs
Link to comment
Share on other sites

Jaaaa! Got this one fixed as well. If the firmware won't go to the PIC, the PIC must go to the firmware...

So i removed PIC #1, put PIC#2 in core 1 socket, uploaded firmware. And PIC#2 nicely said: MidiBox Sid V2.043 - and then something about not starting the CS. Well its device id #1 after all. Good news, so PIC#2 back in slot #2, pic#3 in slot 1, upload , etc.


Edited by EsotericLabs
Link to comment
Share on other sites

  • 1 year later...

Did that fix the cloning or did it just place the firmware on it?

Because you could keep the chips seated where they are and just move the jumper on J11..

It's strange that so many people have the same issue though (i found more topics like this on the forum)

I'm having the exact same issue myself.

Link to comment
Share on other sites

  • 4 years later...

I'm actually having this issue right now (almost ~5 years after this post originated ;-)

I tried writing just the basic bootloader hex to each PIC, then running through the clone process (press menu button while powering on), but this fails for me every time, exactly the same way as in the original post... 

Following the advice here, I tried the same approach that @EsotericLabs has outlined, of burning the basic bootloader to each PIC (e.g., bootloader_v1_2b_pic18f4685.hex) then moving them, one-by-one, into the Core 0 socket in the MB-6582, so that I could apply firmware using MIOS (e.g., mios8_v1_9h_pic18f4685.hex).

That process worked fine, but once I moved the PICs into their correct sockets, MIOS couldn't see them as Device ID 1, 2 or 3?

In a separate thread, there's discussion of having to use "change_id v1_9g" to change the default Device ID of 0 that the PICs receive with base bootloader image.

The 'change id' package even contains new hex files with names like device_id_00.hex, device_id_01.hex, device_id_02.hex, device_id_03.hex. I've tried to use these in place of bootloader_v1_2b_pic18f4685.hex, but this didn't help. 

MIOS can communicate perfectly with my Master Core 0, but it's unable to see any of my Slave cores over a different Device ID.

BTW - I can confirm that I've been moving J11 to correspond to the Core I wanted MIOS to be able to communicate with.

...So basically, I still haven't been able to create Slave Cores. (uhg!)

Any suggestions are appreciated.

Edited by dwestbury
Link to comment
Share on other sites

Every Core (socket) is sharing the Midi IN "lane", so if every PIC has got it's own ID, you can communicate directly via MIOS Studio with every PIC by ID.


Midi OUT is set by J11 to get feedback from MIOS Studio


(Questions and Answers)

Next Question,

How to Clone and why?

You don't need to because you must upload MIOS anyway. So it's just one step less. (Someone should correct me because I'm not 100% sure about that but I explain why) The cloning function is just for updates or to clone setupmb6582 to all slaves. (and this is ok if you just use 8580/6582 SIDs)

For better understanding:

the setupmb6582 is the firmware for the Master Core (Operating Software)

but if you use some 6581 in slave 1, than you should choose setup-6581 for this core.

If you clone (hold menu down by startup) every core uses the 8580/6582 firmware (which has a different filter table than 6581)

Further Information


(Multi SID setup)

Edited by Noise-Generator
  • Like 1
Link to comment
Share on other sites

@Noise-Generator yet more useful info, thanks... I've been digging through so much online material that it's clearly started to clog my brain and prevent the facts from making their way in!

My MB-6582 contains 8 x 8580R5's, so the ability to clone across all cores whenever a new firmware comes out, would actually be really useful. I'd prefer not to have to touch the hardware again.

The piece my brain is struggling with is, at what point in the process of creating the Slave cores do they receive their unique Device ID? 

I have a hunch that I should have been using MIOS to apply the device specific hex files, instead of my PIC writer... I'm going to try that now... (fingers crossed


Edited by dwestbury
Link to comment
Share on other sites

SUCCESS! My hunch panned out... So now I have all cores working properly, with the correct Device ID's...

Once again, in the end the process was simple and straight forward, but easy enough to get confused with...


For anyone that's interested in a step-by-step guide, here's what I did...

Step 1: Write the basic bootloader to all 4 of your PICs

Step 2: Place the PIC that will become the Master Core 1 into the correct Socket, launch MIOS on your computer and access it as Device 0

Step 3: Now you'll use MIOS to write the MIOS OS hex, followed by the setup_mb6582 hex.

(more info for steps 1-3 here: (http://midibox.org/forums/topic/21324-change-pic-id-using-a-mac-for-mb-6582-core-0/#comment-186254)

Step 4: Once you're done with Core 1, you can test your control surface navigation, listen to the default patch sound, etc...

Step 5: At this stage I chose to remove Core 1. I didn't want MIOS to be confused when I added in Core 2, which will have the same Device ID 0 (not sure if this step was necessary though?)

Step 6: Place the first Slave, Core 2, into its proper destination socket. You'll need to move the J11 jumper to position 2 to enable MIDI out to come from Core 2. You'll also need to move the LCD cable to J15_CORE2 so you can watch the screen through each update phase


Step 7: Power up your MB-6582, MIOS should see Core 2 as Device ID 0 now. You'll change Core 2 to become Device ID 1 by using MIOS to write the 'device_id_01.hex' file that comes bundled with 'change_id_v1_9g.zip' (available in the troubleshooting section http://www.ucapps.de/mios_download.html)

Step 8: Your device should reboot after you've written the device_id_01.hex. When it comes back online your LCD should show "New ID Header: 0000000000000001" - you've done it! MIOS should see Core 2 as Device ID 1 now


Step 9: Go ahead and write the MIOS OS and setup _mb6582 hex files, to device ID 1, just as you did for the Master Core 1

...Now you'll basically be repeating Steps 6-9 for each of the remaining Slave Cores...


Step 10: Power down your MB-6582 and add Core 3 into its proper destination socket. Move J11 to position 3 and the LCD cable to J15_CORE3 



Step 11: Power up and do the same as Step 6, using MIOS with Device ID 0, you're ready to change Core 3 to become Device ID 2. Write the 'device_id_02.hex' file you downloaded with the change_id package

Step 12: When your device finishes rebooting, your LCD should show "New ID Header: 0000000000000002" and MIOS should see Core 3 as Device ID 2



Step 13. Go ahead and write the MIOS OS and setup mb_6582 hex files 

Step 14: Power down your MB-6582 again, add Core 4 into the proper destination socket, move J11 to position 4 and the LCD cable to J15_CORE4



Step 15: Power up and do the same as Step 6, using MIOS with Device ID 0, you're ready to change Core 4 to Device ID 3. Write the 'device_id_03.hex' file you downloaded with the change_id package

Step 16: When your device finishes rebooting, your LCD should show "New ID Header: 0000000000000003" and MIOS should see Core 4 as Device ID 3



Step 17: Go ahead and write the MIOS OS and setup mb_6582 hex files

Step 18: Power down your MB-6582, add Core 1 back into its lonely socket, move J11 to position 1 and the LCD cable to it's permanent home on J15_CORE1



That's it.. When you power back up you should have a full set of Master and Slave cores with all the correct Device IDs!



Moving forward, you'll never need to physically touch the cores and jumpers again to update the firmware. You can simply write new firmware to Core 1 (Device ID 0), then reboot while holding down the menu button, to automatically clone to all slave cores (magic!). 


Word Doc with full procedure here for offline reading: https://1drv.ms/w/s!AtmSvwylfFJaggnN1TtalEzGQK1C?e=D6UJrH





Edited by dwestbury
  • Like 1
Link to comment
Share on other sites

  • 4 years later...

Now it's my turn to face some challenges in this process. I'm feeling quite newbies at the moment. I've assembled my mb6582 and currently only have access to the master core. Testing the control surface navigation and listening to the default patch sound, everything seems to be ok.

However, when attempting to select other SIDs, I encounter an error message: "SID(x) not available (CAN disabled)". It think I need to clone other PICs from the master. I attempted this by pressing "Menu" + power on the unit, but unfortunately, the cloning process failed at the end.

I also tried the previous steps suggested by @dwestbury, but upon starting the mb6582, I encountered another error: "CS not enabled".

I purchased preprogrammed PICs from dwestbury, so I assume all the PICs should have the bootloader and the correct ID. I'm not sure of what I might have missed or what my next steps should be.


Edited by Olivier
Link to comment
Share on other sites

  • 1 month later...

I've identified the issues. Initially, I forgot to install a resistor, potentiometer, and capacitor. :whistling: I was too hasty after checking the voltage to bother verifying if anything was missing.
However, even after installing the missing components, I still encountered the same error: "SID(x) not available (CAN disabled)". I then tried using a different LCD screen, which resolved the issue. I was previously using an Adafruit 499 LCD screen, which I believe operates in 8-bit mode. https://www.adafruit.com/product/499

I'm now using a very cheap LCD screen from Aliexpress, although the display quality is poor. I know I can modify it to use the 8-bit mode but I would prefer for now to go with a plug and play solution.
If anyone has a recommendation for a good LCD screen, please let me know (mouser / digikey).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...