Jump to content
adcurtin

Intravee source code? Looking to display text on E46 CD53

Recommended Posts

I'm working on my own project and I'm trying to figure out how I can display text on the E46 business cd unit.

 

I've tried a bunch of ibus commands with no luck.

 

Is the source code of intravee available at all? I'd love to take a look and see how it's done.

 

 

more details: Ideally I'd be on the aux input (which is supported, installed, and works great). I'm hoping I don't have to do some init stuff and fake out a cd changer, but if that's what it takes, I'll make it work.

Edited by adcurtin

Share this post


Link to post
Share on other sites

Simon was always very reluctant to make the Intravee open source.  Not because he did not want people to see it and use it, but because he thought people would use it and then sell it.

 

Displaying text on the Business radio is actually very easy, use function 0x23 from TEL (0xC8) to RAD (0x80) with DB1 = 0x42 to define the layout mode and DB2 set to 0x32 to clear the display first, followed by the text and checksum.

 

So to display 'Hello' the command would be

 

C8 0A 80 23 42 32 48 65 6C 6C 6F 53

Share this post


Link to post
Share on other sites

Thank you! I sent the example message you included and it worked great. I'll have to figure out if my code is busted, or i just set db1 to 0x41 accidentally when i tried that previously. 

 

I completely understand not wanting to release the source. With the right license, you could prevent reselling including derivative works, at least legally. 

 

Is there any place i can find more documentation on various commands or different db values for this command? I've seen this one with db2 as 0x07, 0x30, and 0x32. I'm curious to know more. 

 

I'm also interested in how to properly communicate on the ibus. Is there a hold off time if another device is sending a message? 

 

I shouldn't rely on the bus being perfect, so I'm thinking i also should have a timeout on reading packets, instead of assuming the packets are well formed enough to just read the specified length of bytes. I haven't done anything long term yet, just quick tests,  so im not sure this is a problem yet. 

Share this post


Link to post
Share on other sites

Google a PDF document called "iBus inside", it has some basic information.

 

You should be able to read all the bytes of a message continuously up to the length specified by the second byte in the message up to the checksum byte at the end. If you go into great detail there are different inter message delays depending on the priority of the message. Pretty much anything you do will be low priority, so you should leave a 2 m sec gap.

 

The Intravee has to do the scrolling, the radio is dumb!

Share this post


Link to post
Share on other sites

I'm not seeing anything in iBus inside (draft rev5) about phone messages :(

 

is there any way to send text to the smaller area of the business cd, that displays FM1 when in radio mode? I think I've seen that display CDC for cd changer, maybe I've seen an iPod with certain iPod integration units.

I'm hoping I could display (part of) the strings 'title' 'artist' 'album' on that when displaying the actual track info on the bigger part.

 

Also, the limit for the main text display is 11 characters, correct?

Edited by adcurtin

Share this post


Link to post
Share on other sites

The iBus Inside gives an overview of the ibus system, after that it's mainly focused on the Nav display.

 

I don't know any other way to display text on the Business HU, the radio controls the source and shows the source type in small text. 

 

The display is limited to either 11 or 12 characters depending on the exact radio you have.

Share this post


Link to post
Share on other sites

What hardware (Microcontroller and iBus interface) are you working with ?

 

I've been working on an iBus library for Arduino/Teensy that also handles scrolling text on the Business CD display.

 

I'm also working on controlling the Business CD display directly over I2C. It's fighting me at the moment, but I'm persistent. I've got some text displayed, but it's not quite doing what I want just yet. My ultimate goal is to replace all the Business CD electronics, and use the display and buttons for my own purposes. Basically a completely custom headunit that looks completely standard.

 

Ian.

Share this post


Link to post
Share on other sites

I'm using an Arduino (leonardo for now, so I can have usb + uart), but I'm likely to switch to some kind of teensy soon (leonardo is a 32u4 like teensy 2.0).

 

I'm using a TI sn65hvda195 k line transciever as the ibus interface.

 

I finished the first stage of my project this weekend: reading the steering wheel controls and passing them on to the bluetooth device. I've got text display working on the business cd, but I haven't started to work on displaying track names beyond that. I still need to find a bluetooth module that supports avrcp metadata and actually has it documented. That's my next step.

 

Is your library online anywhere?

Share this post


Link to post
Share on other sites
54 minutes ago, adcurtin said:

I'm using an Arduino (leonardo for now, so I can have usb + uart), but I'm likely to switch to some kind of teensy soon (leonardo is a 32u4 like teensy 2.0).

 

I'm using a TI sn65hvda195 k line transciever as the ibus interface.

 

I finished the first stage of my project this weekend: reading the steering wheel controls and passing them on to the bluetooth device. I've got text display working on the business cd, but I haven't started to work on displaying track names beyond that. I still need to find a bluetooth module that supports avrcp metadata and actually has it documented. That's my next step.

 

Is your library online anywhere?

 

I'm almost exclusively using Teensy 3.1/3.2 for prototyping now. It's a fantastic little board, and with USB as well as 3 UART's, it's very flexible.

 

My library was originally written with the Melexis TH3122 transceiver chip in mind. For reading, it should work with any transceiver, but writing is more difficult without the SEN/STA signal generated by the TH3122. I have included code that tries to simulate the SEN/STA signal when using the Microchip MCP2024 or MCP2004, and a quick look at the sn65hvda195 suggests it should also work with that. That bit of code is still to be completed, as it's not doing exactly what I want, but it's close, and does a reasonable job of avoiding collisions/bus contention. 

 

I don't have a leonardo to test on, but I have tried to maintain support for Uno, Nano and Mega, even though I'm not using them. I don't know what's different on the leonardo, but I am using timers and interrupts (pin change and external), so it may fall over, or conflict with other libraries. I mainly concentrated on coding for the Teensy though.

 

My library isn't currently available online, as I don't feel is complete enough for general release. That said, I'm happy to ping you over a copy if you PM me an email address. Even if it doesn't work with the leonardo as is, it should hopefully be reasonably easy to figure out. 

 

Cheers,

 

Ian.

Share this post


Link to post
Share on other sites

I PM'd you my email.

 

I've got a teensy 3.0, so even if the leonardo doesn't work, the teensy should. When I interface with a bluetooth module, I'll probably end up using the teensy because it's 3v3. (and the teensy kicks ass).

 

I'll take a look at the TH3122 chip. I'm not particularly tied to the ti part.

 

The SEN/STA signal is used to see if you can transmit on the bus, right? It's safe to transmit if send status is 0, but something else is transmitting (or was in the last t_ena time) if the line is 1? That seems a lot easier / safer than implementing that in software. Where did you get yours? (I can't find them quickly)

 

Share this post


Link to post
Share on other sites
3 hours ago, adcurtin said:

I PM'd you my email.

 

I've got a teensy 3.0, so even if the leonardo doesn't work, the teensy should. When I interface with a bluetooth module, I'll probably end up using the teensy because it's 3v3. (and the teensy kicks ass).

 

I'll take a look at the TH3122 chip. I'm not particularly tied to the ti part.

 

The SEN/STA signal is used to see if you can transmit on the bus, right? It's safe to transmit if send status is 0, but something else is transmitting (or was in the last t_ena time) if the line is 1? That seems a lot easier / safer than implementing that in software. Where did you get yours? (I can't find them quickly)

 

 

If you want good, solid, reliable communication, the TH3122 is the best option out there. Once I get the SEN/STA simulator code working 100%, this should make the other chips a lot more viable. It's hard to find the TH3122, as it's now obsolete. That said, there's a place in Germany that I get mine. SEN/STA is low when the bus is clear to send, and high if anything else is transmitting on the bus. It stays high for the entire duration of a received message, plus about 1.5ms.

 

Regarding the bluetooth module. I know the BC127 module will send track, album and artist data, but doesn't support browsing the iPhone (or other device) database. It just sends the info when the track changes. The only one that appears to full browsing functionality is the Bluegiga WT32i. Most of the good ones will do it over iAP if you're signed up to the Apple MFI program, and you have the authentication chips, but the WT32i is the only one that looks to do it over AVRCP.

 

I recently had a delivery of 4 layer boards that will hopefully allow me to test the WT32i, as well as having DAB/FM radio support. Assuming it works (and that's by no means certain), it should be able to handle bluetooth audio streaming, DAB/FM radio and hands free telephone. It also has an Aux passthrough connection.

 

I'll tidy up the library code and get it sent over tomorrow at some point.

 

Cheers,

 

Ian.

 

 

IMG_2551.JPG

Edited by ian332isport

Share this post


Link to post
Share on other sites

I got a BC127. I decided I didn't feel like dealing with making a board and the audio out circuit, and the BC127 has a cheap premade board available from sparkfun (the purpletooth jamboree, dumb name) that does everything I need to develop this.

After upgrading to the latest firmware, there is a super simple serial command to ask for metadata. "avrcp_meta_data 11". that's it, it'll return the meta data. it was insanely easy to configure all the settings (disable hfp, auto connect on powerup, name, etc.), all done over serial.

 

Also, Android is friggin' awesome. There's a developer option to capture all bluetooth traffic to a log file that is readable in wireshark. I captures some traffic asking for the metadata, and the bluetooth module does call out over bluetooth with a request every time. I was worried the module might be caching the metadata when the source sent it, and Android doesn't seem to send metadata unrequested very often (not even every song change it seems, when I tested with the old BC127 firmware).

 

So after all of that, interfacing with the bt module won't be difficult (other than potentially increasing the serial buffer size). I will be playing around with the library you sent me so I can safely transmit track names to my radio.

 

 

 

Share this post


Link to post
Share on other sites

I started with the BC127 (on a board supplied by timmyt on this forum). It's a really good module, and dead easy to control. My only reason for moving to the WT32i module was the lack of iPhone music library browsing capability. Mind you, that could get added at some point with a firmware update if they decided to implement it. I prefer the BC127 control commands. It seems to be a lot easier to use.

 

I think the bluetooth standard states that a device (Android or Apple) shouldn't send any metadata unless it's been requested before hand. On the WT32i, you register for notifications on particular events. If you register to be told when the track changes for example, the device would send a reply to let you know when this happens. It's then for you to request the metadata for the current playing track. You also have to re-request to be to notified of the next track change. You can't just tell it to notify every time the track changes. Requests are a one time deal, so every time it sends you a notification, you have to ask to be told about the next one. It was much simpler with the BC127.

 

Regarding the library, you may want to download it again (same link should still work). I noticed I'd missed a couple of brackets off when I added Teensy 3.0 support.

 

My board is coming along nicely. Fully assembled now, and both Bluetooth and DAB appear to work as hoped. Still a long way to go with the software, but this should be a good development board to test things on.

 

Ian.

 

 

IMG_2572.JPG

Share this post


Link to post
Share on other sites

Hello Ian,

 

Very very nice !!! The PCB is great!!! Nice Job!

 

A small question what kind of DAB+ module  (DAB+ or DAB) do you use?

 

Quote
 
Regarding the library, you may want to download it again (same link should still work). I noticed I'd missed a couple of brackets off when I added Teensy 3.0 support.

Where is the library?

 

Thanks

Share this post


Link to post
Share on other sites
On 19/10/2016 at 7:37 PM, sil said:

Hello Ian,

 

Very very nice !!! The PCB is great!!! Nice Job!

 

A small question what kind of DAB+ module  (DAB+ or DAB) do you use?

 

Where is the library?

 

Thanks

 

I'm using a Keystone T2-L4A-8650C DAB module. It does both DAB and DAB+.

 

I can email a copy of the library if you let me have an email address.

 

Ian.

 

Share this post


Link to post
Share on other sites

Hi Ian!

 

Awesome device!

 

I'm a developer of the OpenSource BMW iBus project imBMW.net 

imBMW V2 device is integrated with OVC3860 Bluetooth music module and now our team of enthusiasts is working on imBMW V3 with Bluegiga WT32i module. Prototype of the V3 device is shown on the videos: one and two.

 

It would be great to talk about our projects and share the experience. If you are interested too, please contact me@toxs.ru or Skype/Telegram: toxsedyshev.

Share this post


Link to post
Share on other sites

Related question. Would this work on a Becker Be2455 ibus radio? (aks BMW Professional RDS) This radio does not support ID3 tags/CD text, also not when for example, a Dension interface is used. Doesn work on the CD43 Business CD radio.

 

Can the Intravee write text to the display directly, not depening on whether the radio supports it?

Share this post


Link to post
Share on other sites

If this is the radio I think it is (could you post a picture to confirm), then it will display text using the phone text iBus message, the problem is that it suffers from the 'double press issue' which makes it almost unusable.  The 'double press issue' is a problem with some radios that will display text but will do nothing until a key is pressed, pressing the key will clear the text but not perform any other action - the effect is that to do anything when text is displayed, you have to press the key twice.

Share this post


Link to post
Share on other sites

This is said unit: be2455-professionalrds.jpg

 

I also have a CD43 and Dension GW300. On the CD43 id3 is displayed, on the BE2455 it’s not.

 

The BE2455 has a nice large display, so could be more usefull with an Intravee than other model radio’s for those without a navi system.

 

I only just got my Intravee and is now in my E39 530i, which I also just own. But just curious if it would work in my E36 with the Becker unit. 

 

I’m aware of the double-press issue. I have since find out that when an ibus device (like my Dension) is active, the ibus doesn’t ‘go to sleep’. A single press on the MFL buttons and it does what it should.

 

With not go ‘to sleep’ I mean I even need a double press on my MFL without any interface connected. Like the ibus (MFL) goes into sleep mode.

I now have an ibus controlled dimmer module in my E36 and since fitted, the MFL no longer goes into sleep mode as the module is constantly sending message about the dimmer’s status.

Share this post


Link to post
Share on other sites

That's not the radio I was thinking of, that's an older single DIN radio probably for an E36, but it almost certainly will not support external device text display as it does not support a phone.

 

Preventing the iBus going to sleep will very rapidly flatten your car battery, probably in just a few hours.

Share this post


Link to post
Share on other sites

No. That was the main reason I asked. Maybe the Intravee could use the display by sending text directly. But reading your reply I guess this is not how it works.

 

So the radio must support it. Most stupid thing is, the BE2455 is the BMW branded version of the BE2430 (Mexico Pro) which does support id3 tags.

 

Why they omitted this for the BMW is beyond comprehension.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×