# Reverse Engineering MS-8 Screen & Remote



## gutz (Aug 8, 2008)

I'm sure a lot of you ( same as me ) got sick of the screen and remote of the ms-8
from time to time a request to be able to control the MS-8 via PC/Android/Iphone is brought up but nothing happened since ( Reference )

I got an idea after investigating the service manual but my coding skills are not at that level so I'm kinda stuck atm ( also this is the first time I'm trying to reverse engineer something so basically for now I'm just a guy with an idea  )
We have a usb port in the ms-8 which can be used to update firmware , why can't we use it to control the device as well?

First let me say I'm not sure if this can even work eventually but I have to try 
My own goal is to make it work via Android but if it works potentially it can be ported to any device with usb hosting abilities 

Andy's posts indicates the microcontroller is located in the screen itself 
But from looking at the service manual I spotted 2 microcontrollers , one is Silabs C8051F367 and it seems to be located in the screen










the other is Silabs C8051F347 on the mainboard and have connections to the DSP ( TMS320DA610B-GDP ) and screen


















Looking at the parts list it seems to be a typo and only C8051F347 is used and probably located in the screen? ( need someone with a better understanding to verify whatever is going on there )

JBL has released a "firmware" update to fix the echo bug - WebSite

They basically used USBXpress
USBXpress
http://www.silabs.com/Support Documents/TechnicalDocs/an169.pdf

a simillar driver also exists for Linux using Libusb
SiUSBXp Linux Driver

so I figured we are basically communicating with the C8051F347 microcontroller

Since C8051F347 is pretty well documented , I thought I could just sniff the port while pressing the buttons on the remote and get some kind of communication I could translate and replicate
It wasn't the case , pressing the remote or changing preferences didn't make any kind of footprint while sniffing the usb port

What I got is from updating the firmware , which I hope helps a little bit to understand the endpoints and whatever is needed to continue ( I used busdog )

A request for firmware version :

```
8	Out  (USB URB Function: 9)	0.000000	8	11 08 01 00 00 00 00 1a	........	
3	Out  (USB URB Function: 9)	0.000025	8	11 08 01 00 00 00 00 1a	........
```
Answer before firmware update :
amp_version = 3.96
display_version = 3.38
dsp_version = 1.30
strings_version = 1.39

```
3	In  (USB URB Function: 9)	0.000721	16	12 10 00 03 26 03 60 01 1e 01 27 00 00 00 00 23	....&.`...'....#	
8	In  (USB URB Function: 9)	0.000004	16	12 10 00 03 26 03 60 01 1e 01 27 00 00 00 00 23	....&.`...'....#
```
Answer after firmware update :
amp_version = 3.96
display_version = *3.40*
dsp_version = 1.30
strings_version = 1.39


```
3	In  (USB URB Function: 9)	0.001015	16	12 10 00 03 28 03 60 01 1e 01 27 00 00 00 00 23	....(.`...'....#	
8	In  (USB URB Function: 9)	0.000007	16	12 10 00 03 28 03 60 01 1e 01 27 00 00 00 00 23	....(.`...'....#
```
I also captured the entire firmware update if that will help I'll upload it somewhere

What I'm looking is for someone with more knowledge to take a look and see if it's even possible what I'm trying to do
And if it is I would love some hints on how to continue ( hex-edit the firmware update for example? translate the URB? )
So any help from the pros here will be welcomed 

Links for reference :
1.MS-8 Service Manual
2.USBXpress
3.SiUSBXp Linux Driver
4.C8051F32x-34x


----------



## ecbmxer (Dec 1, 2010)

I thought about trying to do the same thing with my alpine H100 processor to allow all of the EQ settings to be adjusted. I think I even found that same USB sniffer. But, it never materialized. How does the screen typically plug in? Is it a digital connection, or multi-pin, or what?


----------



## thehatedguy (May 4, 2007)

What is the Pro6Band zip file on the EU JBL site?


----------



## rcurley55 (Jul 6, 2005)

thehatedguy said:


> What is the Pro6Band zip file on the EU JBL site?


It's used during the firmware update to map the mute button on the remote to remove all delay (to alleviate the bt echo).


----------



## thehatedguy (May 4, 2007)

Oooo...thanks mang!


----------



## Neil_J (Mar 2, 2011)

Lol, I'm controlling mine from my Mac on my test bench via a custom Labview app, but I've been rather quiet about it so far. I'll post pics, videos, and a writeup in the weeks ahead.


----------



## Neil_J (Mar 2, 2011)

I'm not going through the USB port either, that seems like a crazy way to do it.


----------



## gutz (Aug 8, 2008)

ecbmxer said:


> I thought about trying to do the same thing with my alpine H100 processor to allow all of the EQ settings to be adjusted. I think I even found that same USB sniffer. But, it never materialized. How does the screen typically plug in? Is it a digital connection, or multi-pin, or what?


I'm not really sure , it looks like a 3.5mm headphone plug
I can't find it in the manual so I'm not sure what kind of information goes through there
Do you think there is a way to connect the screen to some kind of a device and intercept the commands it sends to the dsp?



thehatedguy said:


> What is the Pro6Band zip file on the EU JBL site?


USBXpress_Install - is the driver that silabs released for communication with the microcontroller
MS8Pro6bands - is the actual firmware update app and files

inside MS8Pro6bands
MS8Pro115.exe is the app that pushes the firmware ( and check firmware version )
amp.hex / display.hex / dsp.6bands.hex / dsp.hex - are the actual firmware of the ms-8
strings.dat - I'm not sure what it's part in this

if we figure out those I'm sure we can even backup and restore system ( & correction ) settings which is something a lot of us wanted for a long time


----------



## duro78 (Dec 24, 2011)

This would help a lot for 1. Avoid the glued input which is prone to failure. I have no idea why jbl would spend all that money to design and produce a product only to have it fail do to cheaping out using glue instead of solder. 2. I've had 3 units so far and on all of them I have to hold the remote 3 inches or less from the display to get a response. That kind of defeats the purpose of having a wireless remote. 

Sent from my DROIDX using Tapatalk


----------



## gutz (Aug 8, 2008)

Neil_J said:


> Lol, I'm controlling mine from my Mac on my test bench via a custom Labview app, but I've been rather quiet about it so far. I'll post pics, videos, and a writeup in the weeks ahead.


Exciting 
I would really love to get more info on that
Labview isn't used to program chips? that means you programmed your own microcontroller to communicate with your Mac? how did you "get in" - through the screen port?


----------



## thehatedguy (May 4, 2007)

At work now so I can't open a lot of files...or read a lot of things.


----------



## Neil_J (Mar 2, 2011)

gutz said:


> Exciting
> I would really love to get more info on that
> Labview isn't used to program chips? that means you programmed your own microcontroller to communicate with your Mac? how did you "get in" - through the screen port?


Labview isn't any more special than C++, Python, or Matlab. It's a programming language with emphasis on rapid application development, and contains libraries for talking to various electronic instruments. I have a custom made board between my laptop and the dsp. The Labview app will eventually be replaced with another custom microcontroller board with controls (I'm a knobs and toggle switches kinda guy), but really just about anything could control it via the display port. The interface is dead simple and not encrypted which is good from a legality standpoint (eg DMCA laws prohibit breaking encryption).

I haven't said much yet, as I've not spoke with anyone at JBL yet to see if they "approve" of such a thing... Yes I'm pretty damn sure it's legal (as long as I don't mention their name or product in any of my posts for copyright reasons), but that wouldn't necessarily stop them from sticking lawyers on me, if they felt some dumb kid was reverse engineering and disseminating their "trade secrets". If you think I'm being paranoid, I can cite both historical and anecdotal examples of this kind of thing happening. If I do hear from JBL saying "dude, we think your project sounds awesome and we won't sue you", then I'll start divulging more info.

Because I don't know about you guys, but I freaking hate that display and stupid remote. (edit: I mean I hate it because I'm a picky enthusiast, It's not to be taken as an insult to Andy or JBL)


----------



## IBcivic (Jan 6, 2009)

Neil,
Plz take it to the next step and create an interface box for alpine's AI-net, so that my DVA-9965 becomes the user interface. I swear, I will not tell Harmon, where it came from.


----------



## gutz (Aug 8, 2008)

Neil_J said:


> Labview isn't any more special than C++, Python, or Matlab. It's a programming language with emphasis on rapid application development, and contains libraries for talking to various electronic instruments. I have a custom made board between my laptop and the dsp. The Labview app will eventually be replaced with another custom microcontroller board with controls (I'm a knobs and toggle switches kinda guy), but really just about anything could control it via the display port. The interface is dead simple and not encrypted which is good from a legality standpoint (eg DMCA laws prohibit breaking encryption).
> 
> I haven't said much yet, as I've not spoke with anyone at JBL yet to see if they "approve" of such a thing... Yes I'm pretty damn sure it's legal (as long as I don't mention their name or product in any of my posts for copyright reasons), but that wouldn't necessarily stop them from sticking lawyers on me, if they felt some dumb kid was reverse engineering and disseminating their "trade secrets". If you think I'm being paranoid, I can cite both historical and anecdotal examples of this kind of thing happening. If I do hear from JBL saying "dude, we think your project sounds awesome and we won't sue you", then I'll start divulging more info.
> 
> Because I don't know about you guys, but I freaking hate that display and stupid remote.


Cool
I completely understand what your saying
But if you've seen my thread regarding feature requests , it was a long time ago and absolutely nothing happened since
So my thoughts about this - if JBL don't want ppl to tinker with the product -> listen to your clients
I wouldn't mind waiting for the oem if I knew it was coming from the company but it isn't.. not in this lifetime anyway..

Anyway the only thing I can see that has any problems with legality is maybe backing up & restoring settings because it can lead to ppl cracking their algorithm maybe
but for controlling the unit without the *stupid* display is not something that should concern any of the "heads" on JBL or Harman..

I hope Andy will respond here and give his thoughts on the subject
Andy - If JBL can produce an API to do such thing without reverse engineering anything it will be a win-win situation I think.
Most of our mobile devices these days ( tablets / smartphones ) support usb hosting , and in becomes pretty much a standard


----------



## Neil_J (Mar 2, 2011)

gutz said:


> But if you've seen my thread regarding feature requests , it was a long time ago and absolutely nothing happened since
> So my thoughts about this - if JBL don't want ppl to tinker with the product -> listen to your clients


It's already a niche product, don't expect them to jump through hoops to appease a few enthusiasts (they'd quickly go broke trying, we're a tough crowd to please). But like you say, this is DIY mobile audio, it was inevitable....


----------



## Neil_J (Mar 2, 2011)

gutz said:


> If JBL can produce an API to do such thing without reverse engineering anything it will be a win-win situation I think.
> Most of our mobile devices these days ( tablets / smartphones ) support usb hosting , and in becomes pretty much a standard


My $0.02, forget the USB port. Simply emulate the display and remote through the display port and call it a day. No need for an API, it's dirt simple for anyone with a bit of hardware hacking experience. If you don't like the connector, get out your soldering iron and replace it with something beefier. This stuff isn't exactly rocket science


----------



## 14642 (May 19, 2008)

Neil_J said:


> Labview isn't any more special than C++, Python, or Matlab. It's a programming language with emphasis on rapid application development, and contains libraries for talking to various electronic instruments. I have a custom made board between my laptop and the dsp. The Labview app will eventually be replaced with another custom microcontroller board with controls (I'm a knobs and toggle switches kinda guy), but really just about anything could control it via the display port. The interface is dead simple and not encrypted which is good from a legality standpoint (eg DMCA laws prohibit breaking encryption).
> 
> I haven't said much yet, as I've not spoke with anyone at JBL yet to see if they "approve" of such a thing... Yes I'm pretty damn sure it's legal (as long as I don't mention their name or product in any of my posts for copyright reasons), but that wouldn't necessarily stop them from sticking lawyers on me, if they felt some dumb kid was reverse engineering and disseminating their "trade secrets". If you think I'm being paranoid, I can cite both historical and anecdotal examples of this kind of thing happening. If I do hear from JBL saying "dude, we think your project sounds awesome and we won't sue you", then I'll start divulging more info.
> 
> Because I don't know about you guys, but I freaking hate that display and stupid remote.


Hey! This is cool. In fact, the lengthy code re-write was an effort in developing an API and SDK for reuse of this code by us and potential others who wanted to control the unit using something other than the display and remote that we provide. Teh control strings are purposely not encrypted and there's nothing proprietary in them. Many parts of the audio DSP are proprietary and we'll definitely defend those. We've also done what we can to restrict the ease with which that can be cracked, but nothing is impossible. I'll admit, the display is old school, but this product took so long that by the time we were done, the display was outdated. Since this thing isn't an iPhone--it's a signal processor--and the display is essentially a tool for setup and adjustment, I agreed to let it go as is. 

I'll do what I can to support this effort because I'm seriously software challenged at present. I won't support any effort to crack the DSP code.

Neil, I like your attitude!


----------



## gutz (Aug 8, 2008)

Andy thanks for your comment
let's be clear *we are defiantly not trying to crack the DSP code*
I love the way MS-8 does it's job and I wouldn't want to tinker with it..

I chose the USB route because it isn't really easy for anyone to start programming microchips , I have some friends who might know but I don't 
And even if someone manage to create a batch of microchips like you did - I'm not sure it legal to sell those without some kind of agreement with JBL

As I said earlier if we can make these "instructions" through the USB port it will reach to almost anyone who has the MS-8 unit , cuz most of us also got some kind of smartphone/tablet these days
Also with this route we would still be able to leave the screen connected for when we don't have a device on hand
Obviously I'm not sure this route is even possible , but if it is it will certainly be much more user friendly


----------



## thehatedguy (May 4, 2007)

Very cool Andy!

And pretty incredible Neil!

Maybe a wireless display wouldn't be as impossible to do as I thought...if I knew anything about programming and hardware that is...lol.


----------



## quietfly (Mar 23, 2011)

Andy Wehmeyer said:


> Hey! This is cool. In fact, the lengthy code re-write was an effort in developing an API and SDK for reuse of this code by us and potential others who wanted to control the unit using something other than the display and remote that we provide. Teh control strings are purposely not encrypted and there's nothing proprietary in them. Many parts of the audio DSP are proprietary and we'll definitely defend those. We've also done what we can to restrict the ease with which that can be cracked, but nothing is impossible. I'll admit, the display is old school, but this product took so long that by the time we were done, the display was outdated. Since this thing isn't an iPhone--it's a signal processor--and the display is essentially a tool for setup and adjustment, I agreed to let it go as is.
> 
> I'll do what I can to support this effort because I'm seriously software challenged at present. I won't support any effort to crack the DSP code.
> 
> Neil, I like your attitude!


Andy,
Is the SDK available for those of us willing to sign NDA's and or usage agreements?


----------



## thehatedguy (May 4, 2007)

SDK= software development kit

API= application programming interface

For those following a long that aren't very techie (like me, I had to google them).


----------



## 14642 (May 19, 2008)

quietfly said:


> Andy,
> Is the SDK available for those of us willing to sign NDA's and or usage agreements?


This is the question I'll pose to our software guys later today (when they wake up).


----------



## 14642 (May 19, 2008)

OK. I just asked. We'll see what happens. I'd like to formalize a little developer community for this thing--sounds like great fun to me.


----------



## quietfly (Mar 23, 2011)

Neil_J said:


> I'm not going through the USB port either, that seems like a crazy way to do it.


Neil, 
I thought so too, until i looked at the MS-8 service manual, on page 24 they clearly label the interface TO LAPTOP. I know that Andy has siad he uses a mac mini to control custom DSP modules and test them before using them in the ms-8. so it stands to reason that there would be some serial connectivity available to the unit. the Diagram shows the USB connection to the micro controller. I have yet to try, ( as i just saw this thread today) but i'd guess that with the correct protocol and simulator (kiel can provide those) a USB connection would be able to emulate the display and remote signals. the bigger issue IMO would be the GUI to front end those commands since this is all in C, and not C++, the interface will not be pretty unless we build one. Needless to say this has Piqued my curiosity. I hope Andy keeps up the contribution to this thread.


----------



## Kramer (Mar 7, 2008)

If an SDK is made available, I will gladly jump on board to see what we can do.


----------



## quietfly (Mar 23, 2011)

Andy Wehmeyer said:


> OK. I just asked. We'll see what happens. I'd like to formalize a little developer community for this thing--sounds like great fun to me.


This would be sweet.


----------



## Neil_J (Mar 2, 2011)

This is going to be awesome you guys!

Thanks Andy!

I've spoken with Andy via PM and will write a lengthy post tonight with more info and maybe some pics of the Guinea pig MS-8 on the workbench and some screenshots.

One other thing, forum member oca123 was nice enough to donate a partially working MS-8 to me so that i can install mine back in my car


----------



## quietfly (Mar 23, 2011)

Neil_J said:


> This is going to be awesome you guys!
> 
> Thanks Andy!
> 
> ...


AWESOME! 
Can't Wait!


----------



## gutz (Aug 8, 2008)

ME TOO


----------



## duro78 (Dec 24, 2011)

Possibly not having to go through the entire process just to change crossover settings would be nice. Assigning drivers is something that's done once but has to be redone inorder to make any Co changes.

Sent from my DROIDX using Tapatalk


----------



## Neil_J (Mar 2, 2011)

duro78 said:


> Possibly not having to go through the entire process just to change crossover settings would be nice.


This may be possible to pull off over the display port, through some sort of macro. I've not reverse engineered the calibration commands yet, but I have a hunch that it can be done.

Edit: sorry, I read that a bit too quick on my phone/Tapatalk. What I meant was that it should be possible to go through the setup and not have to put in your speaker to channel mappings every time... Andy has said that what you ask just isn't possible due to the nature of how the algorithms are implemented.


----------



## 14642 (May 19, 2008)

duro78 said:


> Possibly not having to go through the entire process just to change crossover settings would be nice. Assigning drivers is something that's done once but has to be redone inorder to make any Co changes.
> 
> Sent from my DROIDX using Tapatalk


Guys, if you change the crossover after the auto calibration, you'll invalidate the filters. This would be a mistake. MS-8 builds the system as a serial process.

I can go through that part of the menu in less than a minute. Give me a break.


----------



## quietfly (Mar 23, 2011)

I think before this gets out of hand we should make a list of features we want, but also state why and what behavior it would eliminate. 
For example, i would really like a "system display" feature that would just display the current system setup from the output channel assignment to the filter settings. This would eliminate having to remember the last set of settings you set, and help when going through multiple configurations. 
I'd also like the ability to create setup "macros" which essentially could be a batch file containing all your settings. This would allow quick sets. Fill out the info in the file in order and it applies the settings and brings you to the sweeps. Again this would allow for near instant A/B switching and comparisons. 

Sent from my PC36100 using Tapatalk


----------



## duro78 (Dec 24, 2011)

Andy Wehmeyer said:


> Guys, if you change the crossover after the auto calibration, you'll invalidate the filters. This would be a mistake. MS-8 builds the system as a serial process.
> 
> I can go through that part of the menu in less than a minute. Give me a break.


Easy buddy, you explained it and now I understand. Is there a reasoning behind the filters being completely erased? Just mentioning that because it would be easier making adjustents if the last value was present when making the change. Now if a person is trying several different settings you can understand why having to do channel assignment fifteen times would be a little annoying. That one minute you spoke of turns into a substantial amount of time wasted on setting values that aren't going to change. That's why it was suggested to be sub categorized. 

Sent from my DROIDX using Tapatalk


----------



## quietfly (Mar 23, 2011)

I believe it has to do with the way the filters are built. because the process is serial the one step relies upon the next, the values from one stage to the next are combined. this is just a guess


----------



## duro78 (Dec 24, 2011)

Neil_J said:


> This may be possible to pull off over the display port, through some sort of macro. I've not reverse engineered the calibration commands yet, but I have a hunch that it can be done.
> 
> Edit: sorry, I read that a bit too quick on my phone/Tapatalk. What I meant was that it should be possible to go through the setup and not have to put in your speaker to channel mappings every time... Andy has said that what you ask just isn't possible due to the nature of how the algorithms are implemented.


I'm asking to learn I'm in no way knocking the product. If it comes across that way I apologize. Ive been plagued by the faulty display 2x so I'm a little frustrated but that has nothing to with the features we're speaking of. If the powers to be say assigning drivers have to be done everytime a filter adjustment is made I accept it.

Sent from my DROIDX using Tapatalk


----------



## Neil_J (Mar 2, 2011)

duro78 said:


> Is there a reasoning behind the filters being completely erased?


Yes, it's been discussed ad nauseum in the JBL MS-8 thread... You don't even have to read the whole thing, it comes up about every 3 pages or so  :laugh:


----------



## duro78 (Dec 24, 2011)

Neil_J said:


> Yes, it's been discussed ad nauseum in the JBL MS-8 thread... You don't even have to read the whole thing, it comes up about every 3 pages or so  :laugh:


From what Andy explained above it makes sense but it would be easier making adjustments if the last value was present. I guess they it can just be written down. 

Sent from my DROIDX using Tapatalk


----------



## alachua (Jun 30, 2008)

I'm very excited to see what starts to come out of this thread. I know this is in its infancy, but I am curious what Andy/JBL's stance would be regarding non-JBL accessories being sold? For instance, say I want to sell a stacked knob that plugs into the display cable to allow volume/sub level control...or potentially an interface to allow steering wheel volume control for a specific vehicle?


----------



## Neil_J (Mar 2, 2011)

Here's my current setup. I made a pretty picture since people don't read the words anyway, it'll just save me from answering the same question 50 times 









the blue thing in the picture (the Arduino Uno) is what does the hard work. Long story short, once it's in the arduino, it *can be interfaced to damn near any device or software out there*, if someone's willing to take the time to write it. By that, I mean: USB, ethernet, wireless, knobs, switches, encoders, buttons, etc. For the non-hardware nerds out there, the arduino is essentially an 8-bit microprocessor with a custom bootloader and free development software. Everything is *free* and it's dirt simple to program in. I know kids in elementary school programming on these things, so don't let them show you up! You can pick up the dev board for $30 or make your own from scratch.









The Labview app, which is currently reading an asyncronous serial version of the sniffed I2C session between the MS-8 and the display, parsing it in real-time, and displaying the controls on the screen. It also has the ability to emulate the display, although it needs some work and will likely be delayed to see if Andy can get the API document released (I'd rather not have to re-write anything). This isn't exactly "requirements-based programming" here, it's a complete hack job to prove the concept. It's not in any way what the final version will look like.









On the left: JBL MS-8 hooked up to lab power supply. Display cable has been cut and spliced so that the signals can be picked up by the arduino (below). The oscilloscope is showing the SCL (clock) and SDA (data) lines. On the right is the Labview app, which talks to the Arduino over a USB to serial bridge (note, this is NOT the same USB as the MS-8.. just to make that 100% clear, I know zero about the MS-8's USB port or the information that goes over it).












*Q: So... What exactly is this project capable of?*
A: Here are the bullet points of what it will do:

Reading or writing any settings that you can get from your display... that's about it!

*Q: I'm too lazy to read all 7k posts on the MS-8 thread or the manual... which settings can I change?*
A: In addition to manually initiating the calibration process, you can programatically change:

volume 
logic 7 on/off
processing on/off
source (head unit or aux)
mute on/off, volume
auxillary volume
favorite preset 1-5
system levels (balance,fader,center,sub)
tone control (treble,mid,bass)
graphic eq (all 31 bands from -10dB to +10 dB in 0.5 dB increments)

If that doesn't sound very good, use your imagination for a second... Here are a few ideas of what you can do simply by reading and writing to the display registers:

Use the extra I/O lines with buttons, knobs, encoders, etc to change settings without navigating menus. If you're like me and don't drive a bloated SUV, then knobs and toggle switches may be a better way to go than a TFT screen. I like to drive my car, not surf the internet and check weather, thank you. I still consider knobs and switches better than the MS-8 remote, as it eliminates the byzantine menu system, and doesn't require a full-blown computer in your car. I'll probably throw mine into a single DIN or 1/2 DIN panel.
The mute button could be triggered by another device in the car, e.g. a hands-free system
Control volume from your steering wheel buttons... possibly other settings too?
Turn Logic 7 on or off depending which source is selected (head unit or aux) 
Rather than only having five favorite preset, you could have an infinite amount, and qucikly switch between them (note that this doesn't mean that you'll have multiple calibration presets.. just the positions of all the audio controls and equalizer)
Integrate with a carputer via arduino USB port. The arduino is acting as translater between the two.
Integrate with an android via USB-on-the-go to the arduino USB port. The arduino is acting as translater between the two (this would be challenging but would be pretty awesome)
Integrate with iPhone -- More difficult than writing an Android app, since Apple requires a fee (think 5-figures in US dollars) to interface a device. There are workarounds, however, like wifi (the arduino or other microprocessor would have to act as a server), or even a modem via the headphone/mic jack like the oldschool BBS days.. this would be my vote for the sheer awesomeness and challenge.
Make an algorithm to implement a loudness curve (the 31-band equalizer curve would adjust bass/mid/treble ratio as the volume goes up or down)
Hook up a GPS receiver to the arduino serial port, extract the $GPRMC message that contains velocity, and use this as a coefficient to the volume.. i.e. the volume or bass frequencies go up as you approach highway speeds (don't forget to convert, it outputs in nautical miles per hour!). I prefer sound deadening materials myself but if you have a really loud car...
Control multiple MS-8's with one control source 

As far as the calibration process goes:

Input setup (the high/low/noisy, etc part) would remain identical.
For output setup (front/center/side/rear/sub selection, crossover frequencies and slopes, and channel selection), it may be possible for the arduino and/or associated UI's to "remember" which crossover frequencies and and ms8 channel mappings you have, and switch between different profiles... you would have to re-sweep the audio (acoustic calibration) when any of these things are changed, but you wouldn't have to manually enter them every time.
output diagnostics (pink noise) would remain identical
acoustic calibration would remain identical. It may be possible to set a volume macro although this could lead to even more problems.

*Q: You mean I can't manually set time alignment and crossover settings or have multiple calibration profiles? *
A: Nope, but thanks for playing!


----------



## alachua (Jun 30, 2008)

Your ideas are intriguing to me and I wish to subscribe to your newsletter...


----------



## quietfly (Mar 23, 2011)

Great write up Neil!! this is looking better by the minute...


----------



## 14642 (May 19, 2008)

I'll talk to legal tomorrow. Pretty cool, Neil.


----------



## gutz (Aug 8, 2008)

Great write up neil! Thanks
I figured Arduino can be used for that , good to know it actually can 
The stuff you talked about were on my "head list" of things that possible

I still hope Andy could allow access through the USB so we wouldn't have to use additional hardware


----------



## t3sn4f2 (Jan 3, 2007)

Neil, Do you think you'll look into modding a digital input for the ms-8 someday?


----------



## Neil_J (Mar 2, 2011)

t3sn4f2 said:


> Neil, Do you think you'll look into modding a digital input for the ms-8 someday?


If I went that far, I'd probably go full-blown carputer with a Pro Logic surround VST plugin (although such a thing is damn pricy), multitap FIR full active, and enjoy the steep learning curve of a manual tune. I get kinda bored when I can't overcomplicate things


----------



## imjustjason (Jun 26, 2006)

Neil_J said:


> I get kinda bored when I can't overcomplicate things


That's sig worthy.


----------



## t3sn4f2 (Jan 3, 2007)

Neil_J said:


> If I went that far, I'd probably go full-blown carputer with a Pro Logic surround VST plugin (although such a thing is damn pricy), multitap FIR full active, and enjoy the steep learning curve of a manual tune. I get kinda bored when I can't overcomplicate things


Darn it. The MS-8 digital mod eludes us once again.


----------



## SSSnake (Mar 8, 2007)

One thing that I think a lot of us would be interested in is just knowing what adjustments the MS-8 made in calibration. I'm thinking this may not be possible interfacing through the micro controller port but it sure would be nice.


----------



## gutz (Aug 8, 2008)

Cracking the DSP code will not get us their support , and I really don't think we should even discuss it 

If you could know what adjustments the MS-8 made you wouldn't need it , and you wouldn't buy their product
the whole product is based on its remarkable algorithm , and its protected by law so if you try to crack that - they will probably sue you

Let's try to keep this thread clean as possible , we certainly wouldn't want to mess with stuff that can get us in trouble
I'm hoping for a collaboration not fight with JBL & Harman..


----------



## Neil_J (Mar 2, 2011)

gutz said:


> Cracking the DSP code will not get us their support , and I really don't think we should even discuss it
> 
> If you could know what adjustments the MS-8 made you wouldn't need it , and you wouldn't buy their product
> the whole product is based on its remarkable algorithm , and its protected by law so if you try to crack that - they will probably sue you
> ...


Agreed 100%, let's keep it on the topic of replacing the display and remote.


----------



## gutz (Aug 8, 2008)

Neil - do you know if there is a way to "soft off" the ms-8? can we control its power state through the software?


----------



## Neil_J (Mar 2, 2011)

gutz said:


> Neil - do you know if there is a way to "soft off" the ms-8? can we control its power state through the software?


No, but I don't think it's needed... With the Arduino and a relay and a few other components, you can conrol the +12v remote in and out lines, and can therefore control power to the MS-8 and all of your amps (either individually or as a group), and would then be able to control power via iPhone, android, carputer, 1/2 din switch panel, etc. 

Another clever use would be if your tweeters and mids are powered off the same ms8 channels but bi-amped, you could cut power to your tweet amp during calibration which would allow the ms-8 to align to your mids, saving you from having to cover them up every time.. The custom program would be smart enough to only cut power during the acoustic calibration.


----------



## SSSnake (Mar 8, 2007)

I wasn't implying a crack of the DSP code just a indication of the applied filter settings not how or why they applied them. In other words something like 5db of boost at 100hz with a q of 5. As an early adopter of the MS 8 I have had issues with the resultant Image position and eq curve that are likely very dependent upon my speaker locations and the car's interior. Knowing what TA settings are and the resultant EQ curve would just enable me to more effectively deal with the issues I have. I wouldn't think this information would be sensitive or proprietary.


----------



## Neil_J (Mar 2, 2011)

SSSnake said:


> I wasn't implying a crack of the DSP code just a indication of the applied filter settings not how or why they applied them. In other words something like 5db of boost at 100hz with a q of 5. As an early adopter of the MS 8 I have had issues with the resultant Image position and eq curve that are likely very dependent upon my speaker locations and the car's interior. Knowing what TA settings are and the resultant EQ curve would just enable me to more effectively deal with the issues I have. I wouldn't think this information would be sensitive or proprietary.


I dunno, I think that's akin to asking Colonel Sanders what his secret blend of 12 herbs and spices are  just enjoy the chicken :^)


----------



## Kramer (Mar 7, 2008)

Having the MS-8 tell you what it did, would be in essence giving you the 'product' for free. If you were able to buy an MS-8 and install it in your car, let it calibrate, then just rip those parameters and implement it yourself (EQ'ing/crossovers/levels, etc) with other gear, then in essence could return or sell the MS-8 and still have the benefit of it, without having to own it anymore.
Probably not what JBL was going for, unfortunately. There is a reason it doesn't have the functionality out of the box. I think it was more meant to be an install-and-forget type deal.


----------



## marvnmars (Dec 30, 2011)

Imagine an android app for your phone or tablet that could have the support of harmon international and allow you do what is listed to your ms-8...not only slick, but imagine the geek points it would have. Who wouldn't pay $20 for that app....


----------



## gutz (Aug 8, 2008)

SSSnake said:


> I wasn't implying a crack of the DSP code just a indication of the applied filter settings not how or why they applied them. In other words something like 5db of boost at 100hz with a q of 5. As an early adopter of the MS 8 I have had issues with the resultant Image position and eq curve that are likely very dependent upon my speaker locations and the car's interior. Knowing what TA settings are and the resultant EQ curve would just enable me to more effectively deal with the issues I have. I wouldn't think this information would be sensitive or proprietary.


Yeah but think of a situation where 1 unit is passed across a bunch of people - they calibrate , see the tuning results and replicate it with their own processor / hu / car-pc or whatever 
you see where I'm going?
also just by looking at the methodology from a number of cars you can figure out parts if not all of the algorithm involved..

You see what I'm saying? just by knowing what exactly the ms-8 has changed youre not too far from cracking the code itself



Neil_J said:


> No, but I don't think it's needed... With the Arduino and a relay and a few other components, you can conrol the +12v remote in and out lines, and can therefore control power to the MS-8 and all of your amps (either individually or as a group), and would then be able to control power via iPhone, android, carputer, 1/2 din switch panel, etc.
> 
> Another clever use would be if your tweeters and mids are powered off the same ms8 channels but bi-amped, you could cut power to your tweet amp during calibration which would allow the ms-8 to align to your mids, saving you from having to cover them up every time.. The custom program would be smart enough to only cut power during the acoustic calibration.


Yeah , relays are nice and I use them but if they are not needed for me it's just one more thing that can go wrong
Another thing is for example turning off/on amps ( controlling the remote out ) 

Also it will be interesting to see for example if we can control output of specific channels ( lets say you want to turn off the sub or the mids etc.. )

I don't know if any of them can work via the display port , but it might be possible using the usb port


----------



## Neil_J (Mar 2, 2011)

gutz said:


> Yeah , relays are nice and I use them but if they are not needed for me it's just one more thing that can go wrong
> Another thing is for example turning off/on amps ( controlling the remote out )
> 
> Also it will be interesting to see for example if we can control output of specific channels ( lets say you want to turn off the sub or the mids etc.. )
> ...


I'll gladly start a separate thread as it seems that we're heading in two separate directions. I'm pushing forward with the display port interface and will be controlling my ms8 and amplifier remote in's via relays (and will likely have a working prototype in a matter of weeks). If you do figure out how to do the same over the USB port, then I wish you luck. I'm not at all confident that it's possible without custom MS-8 firmware that may or may not exist, and liberal support from JBL/Harman.


----------



## gutz (Aug 8, 2008)

I think a separated thread will not serve anything at this point ( anyways till you have a more "complete" prototype )

Let's see what Andy can do to help since my way is going no where for now ( unless anyone else have any idea how to execute it.. )

After he releases more info , if they won't support the USB way I don't see a really good reason to pursue it and I will probably wait for your final design or whoever takes control of it
For me it's just more of a "dirty" way of doing that with usage of additional and not necessarily needed hardware

Of course you are welcome to do whatever you want but I really think our goal for now is pretty much the same


----------



## quietfly (Mar 23, 2011)

gutz said:


> Also it will be interesting to see for example if we can control output of specific channels ( lets say you want to turn off the sub or the mids etc.. )
> 
> I don't know if any of them can work via the display port , but it might be possible using the usb port


Andy has said pretty clearly that the only thing he's asked for*permission* for the community to do is to allow us to utilize the display port interface. 
From what i understand the USB MCU interface is off limits. I think if we want Harmon's support in this we should tread lightly until it gets more traction.


----------



## gutz (Aug 8, 2008)

I don't recall Andy saying something like that , can you refer me to the post?

What I remember is him saying the display/remote protocol was left not encrypted to allow 3rd party support
Since the microcontroller also includes that protocol it shouldn't be too hard considering we will have the information needed to connect to this protocol through the usb port
It shouldn't conflict with any of the things he said , it just another route to the same "location"
I'm not such an advanced developer so I might be wrong , but that's how I see it


----------



## ecbmxer (Dec 1, 2010)

This is a very cool project. The labview interface is sweet! I bet there are available Python modules to do a bunch of that too (which you mentioned and is totally free). Would you be able to build an executable from your Labview program? It would be cool for other people to be able to use it without buying a license.


----------



## quietfly (Mar 23, 2011)

gutz said:


> I don't recall Andy saying something like that , can you refer me to the post?
> 
> What I remember is him saying the display/remote protocol was left not encrypted to allow 3rd party support
> Since the microcontroller also includes that protocol it shouldn't be too hard considering we will have the information needed to connect to this protocol through the usb port
> ...


I've actually spoken to him offline about this in detail. As of right now he's waiting on word from Legal on whether this can be green lighted. As of this point what he asked for was permission for the SDK/API for the display port interface to be released. that much i know. 
This next part is conjecture, so take it with what ever grain of salt you want. 
Giving up the USB MCU interface would essentially be giving up the keys to the kingdom as that MCU controls EVERYTHING. where as the Display port interface is relatively safe as it is limited in what it can access. 
Remember some of JBL's Best DSP engineers worked on the DSP algorithms, and i'd bet that there is a lot of IP (intellectual property ) that they would not want made public. 
Andy has been great to us, lets not bite off his hand as he tries to give us a little bit more...


----------



## Neil_J (Mar 2, 2011)

ecbmxer said:


> This is a very cool project. The labview interface is sweet! I bet there are available Python modules to do a bunch of that too (which you mentioned and is totally free). Would you be able to build an executable from your Labview program? It would be cool for other people to be able to use it without buying a license.


The Labview interface is really just proof of concept. It is a student copy so not much i can do there. Since it talks to the arduino over a virtual serial port, literally any programming language that has a serial port library can be used to make a UI. Lots of options out there including .NET, the Qt cross platform framework, java, python, and others. I envision a $30 board that would work with several choices of UI's including the ones above, and eventually smartphones. I do have the capability to design and manufacture small runs of board assemblies with reasonably quick turnaround time, that would likely be the easy part.


----------



## quietfly (Mar 23, 2011)

LOL having each person have to get labview for this would be a bit pricey for a display upgrade eh?....


----------



## gutz (Aug 8, 2008)

quietfly said:


> I've actually spoken to him offline about this in detail. As of right now he's waiting on word from Legal on whether this can be green lighted. As of this point what he asked for was permission for the SDK/API for the display port interface to be released. that much i know.
> This next part is conjecture, so take it with what ever grain of salt you want.
> Giving up the USB MCU interface would essentially be giving up the keys to the kingdom as that MCU controls EVERYTHING. where as the Display port interface is relatively safe as it is limited in what it can access.
> Remember some of JBL's Best DSP engineers worked on the DSP algorithms, and i'd bet that there is a lot of IP (intellectual property ) that they would not want made public.
> Andy has been great to us, lets not bite off his hand as he tries to give us a little bit more...


I'm not sure you are correct
This USB MCU is pretty complex and it seems to have a host API that should not harm the firmware
look at this document
http://www.silabs.com/Support Documents/TechnicalDocs/an169.pdf

Correct me if I'm wrong but just using SI_Read & SI_Write and knowing the addresses of the display protocol in the MCU should allow us to pretty much emulate the display
the front end app is supposed to be separated from the actual firmware


----------



## gutz (Aug 8, 2008)

quietfly said:


> LOL having each person have to get labview for this would be a bit pricey for a display upgrade eh?....


As Neil mentioned , you don't need labview , it's just an option
for example in android you can use ADK
it all depends on your end os...


----------



## quietfly (Mar 23, 2011)

gutz said:


> I'm not sure you are correct
> This USB MCU is pretty complex and it seems to have a host API that should not harm the firmware
> look at this document
> http://www.silabs.com/Support Documents/TechnicalDocs/an169.pdf
> ...


 If you look at page 23 on the system Schematic you will see that the USB MCU is the only I2C connection to the DSP and DAC 
once you SI_STATUS SI_Open you can query any device along the path. Phillips was pretty sweet that way so you *could* essentially access the DSP.


----------



## gutz (Aug 8, 2008)

But you would still have to know the specific buffer/addresses to access right? 
The DSP and display ( I guess its a typing error the DAC thing cuz I don't see how this relate ) are connected through the MCU in separate endpoints right?
Looking at the same page you have I2C1 which is connected to the display as well as the Audio Power Amp 1
the DSP is linked to I2C2 which is a different bus I presume

Am I getting something wrong here?


----------



## Neil_J (Mar 2, 2011)

gutz said:


> As Neil mentioned , you don't need labview , it's just an option
> for example in android you can use ADK
> it all depends on your end os...


He was making a joke...Labview is expensive, and he was entertaining the idea of everyone spending several thousand dollars each just to eliminate their display.


----------



## quietfly (Mar 23, 2011)

Neil_J said:


> He was making a joke...Labview is expensive, and he was entertaining the idea of everyone spending several thousand dollars each just to eliminate their display.


*^this^*
lol

also they use an I2C accelerator so that multiple devices can be run on the same bus. so i'm pretty certain the DSP is accessible from the USB MCU..

OMG so many Acronyms....


----------



## gutz (Aug 8, 2008)

Yeah I got that after posting my own post  
I decided to leave it to clarify for others who also didn't get it in the first time


----------



## Neil_J (Mar 2, 2011)

quietfly said:


> they use an I2C accelerator so that multiple devices can be run on the same bus. so i'm pretty certain the DSP is accessible from the USB MCU...


FYI the I2C accelerator you speak of (LTC1694) simply ensures integrity between the remote and the ms8 since the the cable is really long.. capacitances and stuff. It doesn't "allow" multiple devices on the same bus... The I2C protocol already allows that. The presence or absence of that chip doesn't have anything to do with the DSP.


----------



## quietfly (Mar 23, 2011)

Neil_J said:


> FYI the I2C accelerator you speak of (LTC1694) simply ensures integrity between the remote and the ms8 since the the cable is really long.. capacitances and stuff. It doesn't "allow" multiple devices on the same bus... The I2C protocol already allows that. The presence or absence of that chip doesn't have anything to do with the DSP.


i know technically it rides piggy back on each side of the bus , clock and data, though they do say it helps when running multiple devices.


----------



## Neil_J (Mar 2, 2011)

quietfly said:


> i know technically it rides piggy back on each side of the bus , clock and data, though they do say it helps when running multiple devices.


The 1694 datasheet does say those words, but it's a bit misleading... The original I2C spec has a 7-bit address space for up to 127 devices (the extended protocol supports even more address space). Chips like this come in very handy when transmitting a long distance, but when used when all devices are within a few cm of each other, they're like fancy silver plated audio cables-they can be omitted in all but the most stringent of projects.


----------



## quietfly (Mar 23, 2011)

gotcha...


----------



## toolsong (Oct 7, 2009)

Another excellent thread 

The main change I'd like is similar to:



> What is the Pro6Band zip file on the EU JBL site?
> 
> It's used during the firmware update to map the mute button on the remote to remove all delay (to alleviate the bt echo).



I'd like to map the mute button on the remote to one touch input source switching between the main and aux inputs.

Is this going to facilitate that style of mod?


----------



## Neil_J (Mar 2, 2011)

toolsong said:


> I'd like to map the mute button on the remote to one touch input source switching between the main and aux inputs.
> 
> Is this going to facilitate that style of mod?


That's completely within the scope of the project. The MS-8 remote already kind of does this, if I understand you correctly.. I've found that the ms8 display sends the mute command to the ms8 upon receiving a radio/aux source change, and unmutes shortly after the switch is made, probably to prevent a nasty pop. I think it's clever that the display is the doing this rather than the ms-8. But long story short, it's possible to send any combination of mute/unmute and source change commands to the ms8, in any order.

Edit: stupid Tapatalk... I get what you're saying now. Its not really possible to re-map buttons on the remote. With my arduino board, the remote turns into a very bad paperweight. You could interface another type of remote to the arduino, but the intention was to ditch the remote and go with a better user interface. The panel I plan on making will have a dedicated source switch, if that's of any consolation.


----------



## ecbmxer (Dec 1, 2010)

I actually just did some stuff with a Python serial interface. If you haven't already seen it, check out pyserial


----------



## Neil_J (Mar 2, 2011)

Andy Wehmeyer said:


> I'll talk to legal tomorrow. Pretty cool, Neil.


Andy, have you heard back from legal yet?


----------



## toolsong (Oct 7, 2009)

Neil_J said:


> Edit: stupid Tapatalk... I get what you're saying now. Its not really possible to re-map buttons on the remote. With my arduino board, the remote turns into a very bad paperweight. You could interface another type of remote to the arduino, but the intention was to ditch the remote and go with a better user interface. The panel I plan on making will have a dedicated source switch, if that's of any consolation.


No problem Neil, that sounds OK too!

I was planning on integrating the MS-8 remote into my multi-function steering wheel.

Two OEM phone prep buttons aren't used, I was going to map them to the MS-8's volume up and down.

I was considering adding five micro switches for nav + enter, allowing me to change the source.

If I could have a single button with one touch source switching, I'd just mount that somewhere along the center console beside my seat.

I'll wait to see how this mod evolves before I start anything.


Andy, I doff my hat to you sir for your participation here and being open to discussion about mods. If the SDK can be shared, the community will become your firmware team 

I'm interested in single button source switching as my main music source, a hacked 250GB PhatBox storing FLAC on a hard disk, has an aux out.

Taking that straight to the MS-8 will eliminate the following from the signal path:


Blitzsafe Alpine to BMW CD Changer interface
CD Changer signal path through the OEM radio and its internal amplifier-on-a-chip
Speed sensitive volume adjustment, which cannot be completely disabled
Any EQ in the OEM radio

Cheers
Ben


----------



## djtsmith007 (Sep 21, 2010)

This looks cool, great idea and even cooler from the engineering perspective.


----------



## maverickmann (Jun 11, 2006)

Sub-freaking-scribed!


----------



## gutz (Aug 8, 2008)

Andy , Any updates?


----------



## nineball (Jan 17, 2008)

gutz said:


> But you would still have to know the specific buffer/addresses to access right?
> The DSP and display ( I guess its a typing error the DAC thing cuz I don't see how this relate ) are connected through the MCU in separate endpoints right?
> Looking at the same page you have I2C1 which is connected to the display as well as the Audio Power Amp 1
> the DSP is linked to I2C2 which is a different bus I presume



after reading this quote i now know what my friends feel like when i am describing crossover points, slopes, driver specs, active crossovers.....


----------



## diynube (Feb 27, 2011)

I feel like a jerk for bumping threads, but does anybody know if any progress has been made?
I think most of us would agree that being able to use analog dials for bass control and volume control, etc, would been awesome.
I would probably try to make my own or would gladly pay a forum member to build a unit like this. I would even purchase a unit from JBL that would add this functionality. 
I like to tinker with bass and volume primarily, and don't want to get in a crash by trying to read my MS-8 display cruising down the interstate...
I like the feel of the JBL remote bass control for some of their amps.


----------



## subwoofery (Nov 9, 2008)

The OP sold his MS-8. So nope, no progress...

Kelvin


----------



## xanderin (Mar 26, 2008)

If you point your iPads camera at the MS8 display you can see the full menu on your tablet... Problem solved >.> Right?


----------



## Neil_J (Mar 2, 2011)

I threw both of my MS-8's away and won't be continuing development of the display interface. Can't really say I'm sorry. If anyone with hardware hacking experience wants to step up, PM me, and I'll tell you everything I know.

JBL isn't spending a dime to fix/improve it either, last time I checked. I hope they change their minds about this one day, the MS-8 may not be perfect but it is capable of much more than it is in its current state.


----------



## gutz (Aug 8, 2008)

Neil , I'm still interested to see how this can be continued

If you want , post the details here so others can continue your work
Otherwise , I would love to get what you have to offer via PM

I had a friend of mine who studies electronic engineering , to take a look at the specs of what I got
He told me that without the support of the OEM , it would be pretty hard or next to impossible without some serious hardware like J-TAG or something ( Which I don't have )

So , Since the Arduino route ( or other i2c capable device ) is the only way to go for now
I would love to take it to the next level and even make an app for android further down the road


----------



## willtel (Dec 18, 2008)

Does anyone happen to have an MS-8 display for sale? 

Mine was stolen and JBL\Harmon doesn't have any in stock and won't for at least another month.


----------



## alachua (Jun 30, 2008)

Neil_J said:


> I threw both of my MS-8's away and won't be continuing development of the display interface. Can't really say I'm sorry. If anyone with hardware hacking experience wants to step up, PM me, and I'll tell you everything I know.
> 
> JBL isn't spending a dime to fix/improve it either, last time I checked. I hope they change their minds about this one day, the MS-8 may not be perfect but it is capable of much more than it is in its current state.


I'm hoping there is some support coming in the future. When I checked the Harman site a month or two ago there were quite few software developer positions listed in the mobile electronics group. If it weren't for the EE skills required I would have pursued one of the entry level positions. With any luck this will address Andy's claims of not having the man power to devote to further development on the unit. Or, they may be pulling a classic consumer electronics move and developing the next iteration without any intention of addressing the issues experienced by the early adopters. I'm not quite jaded enough to assume that though.


----------



## raft211 (Oct 4, 2007)

Sorry to see this fell by the wayside. I'd like to see it succeed. If anybody who was originally involved wants to forward me the information they currently have, I'll put together an Android/Arduino app to show it off. I suppose I'll finally need to acquire an MS-8.


----------



## gutz (Aug 8, 2008)

Hey raft211 it's good to see someone else interested in this

Neil_J got the most progress so far as I've seen but he doesn't want to share ( to me anyway since I tried to PM him more than once.. )
This is the most detailed post he wrote - http://www.diymobileaudio.com/forum/1547416-post40.html

I'm planning to fiddle with this myself , but not long ago my car was stolen ( with my ms-8 ) so I don't know when I'll be able to get some progress ( first I need a new car )
Good thing I bought a spare display cable just a couple of weeks ago ha? 

It will also be my first use with Arduino ( probably Uno ) but I don't think it will be much of a hassle
PM me if you want to collaborate ( tho both of us are without a unit right now  )


----------



## sub_junkie (Jan 10, 2010)

Hate to resurrect an old thread, but I'm missing the remote on my MS8 and am really interested in doing this but was wondering if there had been any other progress on this in the years that passed?


----------



## Force (Apr 12, 2017)

how to use EZ mode in jbl ms8


----------

