Using the SMBus with another device?

Here you can discuss things that are not directly related to running or using XBMC4XBOX.
Post Reply
shawly
Posts: 1
Joined: Mon Jul 22, 2019 8:05 am

Using the SMBus with another device?

Post by shawly » Mon Jul 22, 2019 8:17 am

So my friend and I are trying to replace the front panel LEDs with RGB LEDs using a separate microcontroller.
We were able to read the status from the current front panel so we can react to error codes properly, so it isn't just a "dumb" LED replacement with an external controller. 

Our next goal was to send commands over the SMBus to the Arduino (Nano, ATmega328P) we use to control the RGB LEDs. I customized the XBMC code to send data to the new address I defined for the Arduino, in our case we used 0xE9. Since the Wire library of the Arduino already shifts the bits, we set the Arduino's address to 0xE9 too. 
The thing is, the Xbox sends the signal, but the Arduino isn't reacting to the given address. We already tried to analyze the signal and we can confirm that there is data being sent through the SMBus. OFC we wired up SDA and SCL correctly, we checked twice and since the logic analyzer is able to sniff data, it should be correct.

Has anyone ever tried this yet? I've seen a couple of threads talking about controlling Ambilight over the SMBus but it seems like nobody has tried it yet. I guess we are doing something wrong, but we haven't yet figured out what it is that we are missing. Next thing would be buying a proper logic analyzer, but maybe somebody here has some experience and could lead us in the right direction before we spend the money. 

Is there any more documentation on the SMBus of the Xbox out there? I've just found the documented stuff on the xboxdevwiki. 

Thanks in advance!

User avatar
professor_jonny
Posts: 1233
Joined: Thu Jul 05, 2012 5:41 am
Location: New Zealand
Has thanked: 56 times
Been thanked: 174 times

Re: Using the SMBus with another device?

Post by professor_jonny » Wed Jul 31, 2019 2:32 am

The SMbus is used for traffic for system management (go figure) and because of that is not recommended to be used for addons it could interfere with something critical.

Best to use a LPC super I/O controller and serial bridge for what you are planning or use a modchip with SPI.

http://xboxdevwiki.net/Super_I/O

If you jump on the Xbox Devnet discord channel the user xbox7887 made a super I/O controller for kernel debugging there is a code repo with gerbers etc... and you can buy one off him.

Of note it is only of use on the xbox <1.3 as the others need LFRAME generation using a CPLD.
I believe you do that by waiting for a long wait state then generate it assuming the Xbox is waiting for a response.
You can scratch the solder resist of the nv2a and join it directly to the chip interconnects but it is a tedious task!!!.

He has plans to make one with keyboard, mouse, WIFI and modchip capability in the future that will support all consoles.

From memory it was using a SMSC LPC47M157 and a FX321XS.

Psyco_Chewbacca also made one with his modchip and an Arduino by bit banging the extended I/O on board his modchip.
https://bitbucket.org/psyko_chewbacca/l ... _debugger/

Post Reply