So I've being silently working on a new modchip. After I had the Aladdin XT code in good shape, I began the design and the coding of this new modchip. Today, I present to you a preliminary (and incomplete) version of this chip. It's almost based on the same logic except it adds much more features. For now here's what's working on it: Dual 512KB banks D0 signal control for 1.0-1.5 Xboxes L1 signal control with release for 1.6(b) LCD support! (only tested with HD44780-compatible) Software controlled Backlight Software controlled contrast (Still need to tweak the low-pass filter. Currently, voltage swings between 0.8V - 1.2V) +5V supply is switched on board. This is only useful for 1.6(b) but doesn't hurt for 1.0-1.5. Modchip OFF feature with long power button press. This feature is not working 100% right now. The trick is to disable loading BIOS from modchip while leaving LCD support active. There are more features coming, you can see on the picture that not all components are populated. I don't have much time to describe it all so I'll just leave you with a video (sorry for the lens flares...): And 3D renders I generated: Bottom: Top: First revision of the PCB is working but there's going to be a second revision for sure. There are a few things that needs tweaking or enhanced. Thanks!
I am glad to finally get a look at it. I have been looking at the 3D renderings for the last 2 months wondering when you were gonna get this into production. Well I guess the ball is rolling and it is rolling fast! You work really fast. It just seems like yesterday you told me about this and shared the renderings and now the video shows proof that it is working with the LCD. Good job and continue all the hard work. I will be buying a few of these. Also when are you gonna start on the lite version?
Awesome Benny! Can't wait till you finalize this modchip, I will be purchasing a good amount of them.
I've fixed the long Power press disable feature. I wanted to retain LCD functionnality even if modchip is disabled but it turns out it's not going out so well. I don't think it's worth it to spend much more time into making it work. Anyway, the point of using a modchip is to use the modchip! So now it's possible to boot from on board BIOS. I also had some fun with modchip look up. I didn't want to recompile XBMC4Xbox but doing so, I could implement a new modchip ID, unique to my modchip. Just need to figure out a name.
Awesome When you start selling some or need testers, I'm in (I do have a xilinxs programmer now, might try something myself... But not much time left everyday)
Awesome man! I was always wondering why someone didn't step up to the plate and make a chip like this! Great work! I'll sure buy a few of these!
I definitely want one or more of these baby's once you hammer out the bugs you want fixed first. I'd love to play around with a new custom chip! Very impressive work sir!
Hi, ran into some problem with my dev computer: Hard drive crash! I'll be buying a new HDD today and rebuild it tonight. Hopefully no code is lost. I read too many horror stories about abandonned projects because of hard drive crashes. Lucky for me, I have a cool girlfriend that gave 2 AVID MediArray XZ2 servers: They were throwing them away at her job a couple of months ago! I now have my own GIT server in my basement. Only a fire or 4-foot high flood could stop me now! I the mean time, I completed soldering one of the modchip. That includes a LPC1343 Cortex-M3 microcontroller, 4MB SPI flash and USB 2.0 connectivity. I2C on the LPC1343 is mapped to the Xbox's SMBUS. There's a 12 bit wide data bus between the LPC1343 and CPLD. That means the LPC bus on the Xbox can be used to send or receive data from/to the LPC1343 uC. I chose the LPC1343 because it's a Cortex-M3 CPU: fast, low power, speedy interrupt call response, lots of IO and peripherals(PWM, ADC, UART...). One other cool thing about the LPC1343 is that there's no need for a programmer to reprogram the chip. You just need to plug the modchip to your computer via USB while holding the "ISP" push button. The microcontroller will appear as a disk drive and you just need to drag and drop a "firmware.bin" file into it to reflash the microcontroller. However, this feature work best in Windows. It's a little tricky in Linux. Don't know about Mac. First tests this weekend will be to make sure the LPC1343 communicates with the Xbox. More details about this whole microcontroller endeavour will come after initial testings.
Protip, use dropbox and use that folder as your code store. If HDD dies, it doesnt matter. It also doesnt require you to remember to back it up.
Yes thanks for the reminder. I do unregular backups to Dropbox. But I prefer a proper source management system. The MediaArray server does have 2 8-HDDs array configured in RAID10 and double redundancy power supply. I also have lots of spare parts(from the second unit) so I guess that for regular commits, it's still a better option to manage code development. The problem working on such a closed system(Xbox) is that sometime you code with a certain logic only to find out a few revisions later that this logic does not suit the host system behavior. Ability to roll back a few commits behind easily is an apreciated time saver! Anyway, dev PC is rebuilding right now.
Yes, you can use a proper management system, just use your working directory on dropbox too and you wont lose anything (especially if using git at the same time)
Hello, update on the situation: Turns out there was more than a HDD failure on my PC. I had to replace the whole thing... Still this bad boy suffered for 10 years being pushed beyond it's limit, voltmodded and all. A system failure was to be expected! Anyway, rebuilt another machine and started working on the modchip. As I wrote in an earlier post, the modchip not only loads BIOS and interface a LCD, I also had the idea of embedding a small microcontroller on it. the NXP's LPC1343 was the winning candidate: 72MHz Cortex-M3 CPU 32KB flash storage 8KB SRAM Native USB 2.0 interface 11 PWM channels I2C SPI up to 33MHz UART ADC a handful of GPIOs Ability to program the micro via USB without programming software. The goal of the LPC1343 is to add some brains to the modchip. The idea is to interface the microcontroller to the Xbox's LPC port through the CPLD and tap onto the SMBus via I2C. This way, a program running on the Xbox could send and receive data from it. On the top of my head this could allow for cool features such as: Boblight hardware interface: Multiple PWM IOs, UART and SPI could be used to connect LEDs. Use more complex LCDs: uC can manage interfacing with graphic LCDs. Either with SPI, UART or GPIOs. Can run independently: the uC can manage to run on it's own. No need to have a program running on the Xbox to drive it. It could retrieve information from the SMBus like temperature and drive the LCD while you play a game. Inject commands on the SMBus: Like automatically fixing the RTC clock, changing video encoder's parameters. Interface with the PC: Print debug data, flash modchip's BIOS banks. These are the ideas I had that made me put a uC on it. I chose a Cortex-M3 for these reasons: - It handles interrupts very quickly. This is much needed to efficiently interface with the LPC bus. Running a parallel bus at 33MHz (LPC bus) and not knowing when data will come in requires fast interrupt response in order to not stall the LPC bus for too long while uC is working. - Relatively low power - Chip manufacturers offer packages with not too many pins and possible to solder by hand. - Prices for Cortex-M3 uC are reasonable. LPC1343 around 5$ a piece. - It's easy to set up a dev environment. GNU ARM tools are widely available. Everything is about ARM these days. The development for Xbox<->uC communication involves: 1-coding logic in the CPLD to decode LPC bus' data, 2-shift it on a parallel interface between CPLD and LPC1343, 3-signal the LPC1343 that either new data is available or that the Xbox requests data, 4-Stall/hold the LPC bus until the uC completes the request 5-Release the LPC bus and send data coming from uC when it's the case. The problem is that, in normal operation, the LPC bus takes 15 clock cycles at 33MHz to complete a single byte of data transfer. LPC1343 takes too much time between the time it receives an interrupt request and the time it execute the code in the interrupt request routine to supply the CPLD with data to respond in time on the LPC bus. Hopefully, Intel designed the LPC protocol to enable a wait state. You can send 2 different wait state commands: short wait and long wait. I know for a fact that short wait state works on the Xbox but I don't know for how much cycles the Xbox will stay in that state until it times out and drops the LPC transmission. I don't know if Long wait state is supported on the Xbox. And those 2 unknown facts have not been answered yet... I programmed the CPLD and the LPC1343 uC with my code that supposedly could handle bi-directional communication. It didn't work, the Xbox FRAG. I thought of another way to interface but that will require much more work to implement. A second revision of the modchip's PCB will be needed but I don't want to do it until I can make the uC interface with the LPC bus. In the meantime, I have started designing a "Lite" version of the modchip that incorporate 2MB of flash for BIOSes and LCD interface with software-controlled backlight and contrast(not sure if I'm going to put a potentiometer for contrast instead...). In the future, I hope people will like the idea of the microcontroller on board. It is also my hope that still active Xbox developers will use this feature to their benefit! Once I get this thing working, I will put the microcontroller's source code online for anyone to contribute. I've also started settings a proper environment to develop a Cromwell based mini OS for this modchip. Gentoox Loader is very well featured "OS" and source code is available (Thanks ShaLLAx!). Source code is old and does not build well on current gen systems. I'm still not sure if a OS is really that necessary. Most of what you can do in a modchip's OS is possible using programs on the Xbox itself. Is it really worth it to spend lots of time on this? Again, I hope some developers out here will be interested in this project!
Thanks for the update benny! I wish I had the knowledge that you do, and could make my own modchip with a micro-controller. I think the idea of releasing a lite version of the modchip is a good idea. I like the idea of having the contrast and backlight controls software-controlled as opposed to having a potentiometer. I know the OS feature is not at all necessary, but I think the majority of people would favour an OS as opposed to using programs on the Xbox for changing settings. Thanks for your hard work on this! Can't wait to try one out.
Hello, I got the modchip with microcontroller soldered to boot on the Xbox. However it's not communicating, I'll have to investigate further but it whould be fairly easy using the uC USB-CDC feature to print debug data to a terminal! Since I got a little fed up on making it work in the past days, I did design the PCB for the Lite version of the modchip. Bottom: Top: Prototypes were sent to fab house. I should get them in about 2 weeks. Sorry, no 3D renders for this one lol! It's still using 1MB SST49LF080A flash chip. I initially planned on using a 2MB TSOP48 flash chip which is much cheaper but CPLD code required to connect the parallel interface to the LPC port was taking too much space for a XC9572XL cpld(got it to fit into 78 cells, darn it). I would have needed to upgrade to a bigger and more expensive CPLD. Doing some research, I found that the combination of bigger CPLD + TSOP flash would not be that much cheaper than using XC9572XL cpld + SST49LF080A flash. Even more, soldering a TQFP64-100 + TSOP48 is much more time-consuming than a QFP44 and PLCC32. Considering that I solder these by hand, it'll take much less time to solder the current combination. So basically, it'll stay at 1MB but the chip will be configured as 1*512KB bank and 2*256KB banks. For now, I'll be using 2 physical switches to toggle banks. It will also have the following features: -Long power press disable modchip. -LCD support with software controlled backlight and contrast. -D0 signal control to disable onboard TSOP. -LFRAME signal control and release for 1.6(b) Xboxes. -Software controlled switchable +5V rail. Mostly useful for 1.6(b) Xboxes. I managed to succesfully build gentoox loader. I'm using version 3.3.3 of gcc; newer versions are giving me issues. I plan on modifying the loader to control the modchip like switching banks, power ON and OFF the LCD and other features. I'm a real beginner in this field but it's a great opportunity to learn! If anyone has some knowledge and/or experience in developing cromwell, please help me . I'll be creating a public code repository on GitHub for this particuliar project for anyone to contribute. I also read that the X-changer team created a "Open Source" OS for their chip. Anyone knows where I could find the code of this OS? I couldn't find it on Eurasia or Xbins. It could be really useful! EDIT: Found it, 2.2 and 2.5. Unfortunately it's too big to post it here for archiving.
I have a real X-changer 2.5 chip It has 2 separate bios flash chips like your chip does. That is a cool mod chip and 1 of the few that has its own OS.