Jump to content

Recommended Posts

  • VIP Members
Posted (edited)
Dark Destiny
This post was recognized by Dark Destiny!

Prehistoricman was awarded the badge 'Superstar' and 42 points.

It has long been thought that the Xyclops chip, which contains the BIOS on a v1.6 motherboard, is not flashable. However I recently discovered it has a serial port with a variety of interesting commands. It supports dumping the BIOS as well as the Intel 8051 code that runs the SMC functions of the chip. And just like the other Xbox versions that have the TSOP flash, we can reprogram the BIOS on the v1.6.

In one way this mod is better than your typical TSOP flash because it's easy to recover from if you screw it up. The serial port will still be available.

Tutorial

Required items:

  • 3.3V USB to UART adapter. You can find many of these available online at very low prices. See if you can get one that has a TX resistor value lower than 1k because the Xbox's RX has a 1k pulldown.
  • v1.6 Xbox - this cannot work on any Xbox without a Xyclops chip
  • Soldering iron
  • Python installed on your PC
  • The flashing script https://github.com/Prehistoricman/Xbox_SMC/blob/master/Xyclops/xyclops_flasher.py
  • A 256KiB BIOS bin file

Steps:

  1. Connect your USB to UART adapter to the Xbox. This can be done either by connecting to the AV port, or by opening the Xbox and using internal connections.
    1. Internal connections
      1. Xyclops pin 29 is DEBUG. Wire it to the 3.3V standby voltage.
         image.jpeg.6ed2c1cda42a6c53cd64c3901d5fde8c.jpeg
         
      2. Xyclops pin 64 is TXD. Wire it to the adapter's RX pin. Either:
        1. Near Xyclops: 
          image.thumb.jpeg.6c5eac9f02d58814f8926398827cba8e.jpeg
           
        2. OR under the AV port:
           image.thumb.jpeg.4bb20a29e6fba3f0e477bba9f8f1c687.jpeg
           
      3. Xyclops pin 63 is RXD. Wire it to the adapter's TX pin. Either:
        1. Top side, near AV port:
           image.thumb.jpeg.f7d40986550a999366f3b3b2e2058ed3.jpeg
           
        2. OR under the AV port:
          image.thumb.jpeg.c7cd38f318b0f292e8f09633e3a6ffe4.jpeg
           
      4. Connect ground to the adapter's GND pin. You can use the xbox metal case, any screw holding the motherboard down, or pin 2 of the LPC header (see pin layout here).
    2. AV cable - not advisable!
      1. See AV plug diagram here https://xboxdevwiki.net/AV_Cables
      2. Pin 5 is DEBUG. Wire this to 3.3V.
      3. Pin 18 is TXD. Wire this to the adapter's RX pin.
      4. Pin 6 is RXD. Wire this to the adapter's TX pin.
      5. Remove resistors below the AV port: R5M3, R4M10. This will affect the video mode recognition and can prevent normal display, so they should be replaced after the mod is complete.
      6. Connect any ground pin (such as pin 6, 7, or 😎 to the adapter's GND pin.
  2. If you cut LFRAME to do a modchip install, you will have to reconnect it.
  3. Plug in the USB. It's better to do this before powering on the Xbox
  4. Plug in the Xbox. It can be left in standby.
  5. Identify what serial port your adapter has. On Windows you can expect it to something like COM5.
  6. Install Python 3 if you haven't got it already
  7. Open cmd, powershell, bash, or whatever the terminal is on your PC.
  8. Execute the script by writing 
    python xyclops_flasher.py your_bios.bin COM5

    to the terminal, replacing your_bios.bin with the path to your BIOS file, and COM5 with your serial port. Press enter

  9. Follow the on-screen text. It should say Xyclops communication established and ask if you want to erase the flash.
    1. Once the connection has been made, or even attempted, you may be unable to turn on or off the Xbox. That's normal. The SMC gets frozen while the serial is active.
    2. The Xyclops can get upset and stop responding sometimes. If you can't get communication, try unplugging the Xbox for 10 seconds.
    3. If you get erase timeout, make sure you made the GND connection.
    4. If you can't get communication, then your serial adapter might have too much internal resistance. Identify its TX resistor and reduce it to ~500 ohms.
  10. The flashing process takes about 2 minutes, and the verification (if you want to do it) takes another 2 minutes.
    1. If you want to verify again, use the -v option:
      python xyclops_flasher.py your_bios.bin COM5 -v
  11. The Xbox power button should work again, so try turning it on.
  12. If you get video issues (like greyscale video) and you removed two resistors in step 1.2.5, you will need to place the resistors back.
  13. Disconnect the DEBUG wire for enhanced stability. The Xyclops will freeze whenever it sees any activity on the RX pin.

FAQ

  1. Can we use a BIOS bigger than 256KiB?
    • Not on a retail xbox. Some rare devkits may be able to do 512KiB but I have not confirmed that.
  2. I ran the script and my Xbox won't turn on!
    • Yes, the SMC will freeze when it receives serial communication. The script should resolve that if it exits successfully, so I must assume it failed. You can unplug your Xbox for 10 seconds and plug it back in to reset and try again.
  3. Can this be done via a software method?
    • Not to my knowledge, but it is rumoured to have been discovered.
    • Technically the answer is yes, but it involves using the serial first and then reprogramming the SMC (advanced).
  4. What else can it do?
    • The Xyclops serial port is able to do a lot of low-level actions on the SMC. For example, it can 'press' the front panel buttons, change fan speed, change LED colours. It can also potentially do some hacky things such as spoofing the video cable mode, or bypassing the boot challenge (FRAG).
    • We are also able to re-program the SMC which could lead to some more advanced mods for specific and niche purposes.
  5. Through the AV port???
    • Yeah I know right? We can't be sure why Microsoft made it this way. It's too slow for factory programming AND there's those resistors preventing it. It could definitely have expedited the development process of Xyclops, but that doesn't explain why it was left present in the retail motherboard.
Edited by Prehistoricman
  • Like 11
  • Thanks 4
Posted (edited)

What resistor is it? Can we just remove it and then use the AV port?  Answered my own question. Just needed to RTFM!

Edited by botsauna
  • Like 1
Posted (edited)

Crazy... This is top shelf modding.

Thank you for all your work man. This is really going to help the community in a big way.

All those people out there that don't have access to mod chips... 

Seriously huge moves.

Edited by Matty Suds
  • Like 1
Posted

Can we still use the YPbPr mode after we removed the resistors?

 

If I see it right we remove the GND Potential for Pin 5 and 6 which would prevent Pin 17 and 18 to be tied to ground by a YPbPr cable (as long as it's wired 5+17, 6+18)

 

Additionally wiring pin5 to 3.3V and then having a YPbPr cable which simply shorts pins 5+6+17+18 to gnd could be a risk of a short, so the modification at least of pin5 needs to be reverted, right?

  • Like 1
Posted

Hi Everyone 

While reviewing the schematics, we did notice something interesting , the resistors R4M10 and R5M3 are not populated on debug Xbox units, but they are present on retail boards. You can tell by the asterisk next to each resistor value, which typically indicates a “Do Not Populate” (DNP) part in production for certain versions (in this case, debug / test units).

From what we can tell, these resistors are used to disable the debug UART pins on retail units. They don’t appear to be related to AV pack detection or AV mode selection but some people have reported fragging using composite cable after removing the resistors.

Just to be safe, I chose to hardwire the UART connections directly to the motherboard. I then routed those wires out through the front of the case. On the external end, I terminated the wires with a male pin header, and my programmer connects using a female header plug.

This discovery is still new, and we’re learning a lot as we go. With ongoing feedback and testing from the community, I’m sure we’ll uncover alternative methods and figure out what works best and what doesn’t.




image.png.d7a42e268466af51fabe683a0701b659.png

Posted

We have confirmation from members in our community that this is working with Xyclops revision A-A02

We are looking to see if there is a method for those who have A-B01

  • VIP Members
Posted
7 hours ago, ManCloud said:

Can we still use the YPbPr mode after we removed the resistors?

 

If I see it right we remove the GND Potential for Pin 5 and 6 which would prevent Pin 17 and 18 to be tied to ground by a YPbPr cable (as long as it's wired 5+17, 6+18)

 

Additionally wiring pin5 to 3.3V and then having a YPbPr cable which simply shorts pins 5+6+17+18 to gnd could be a risk of a short, so the modification at least of pin5 needs to be reverted, right?

I'm not sure. Do cables actually short all those pins together?

I see your point about pin5. I wrote the instructions from the point of view of modifying the AV cable rather than internal installation. So you just remove the short to ground on pin 5 from the cable.

  • Like 1
Posted

for those want to use a pico, i wrote down the whole process that worked for me

- i used this exact fw: https://github.com/JoeSc/pico-sexa-uart-bridge
- i soldered in the connections on the picture with 40awg wire
- the pico emulates 6 com ports, and i used the 4. one, you have to test it which works for you
- verified with a stock bios dump from an 1.6 to ensure the communication between the pc and the console is flawless. (note: i couldn't dump the bios succesfully with the dumper script.)
- when the stock bios verification ended succesfully i flashed the cerbios.bin

note 2: you can make soldering the txd via easier if you scratch it a little with an exacto knife
note 3: i used the lpc port ground point

IMG_2470.jpeg

  • Like 1
  • VIP Members
Posted
2 hours ago, rdwoodw said:

Dumb question. This will work on v1.6b as well?

v1.6b is fine (we don't care about RAM) but check the writing on the Xyclops chip. A-A02 is good, A-B01 is not.

Posted

I tried with my 1.6 which has A-B01 and i got this error.

C:\Users\Prabhu>python C:\Users\Prabhu\Desktop\xyclops_flasher.py C:\Users\Prabhu\Desktop\bios.bin COM4
Sync failed... trying 38400 baud
Error: No communication from Xyclops. Check connections or try unplugging your Xbox for 10 seconds.

So, curious for the update.

 

 

Posted
20 minutes ago, Prabhu said:

I tried with my 1.6 which has A-B01 and i got this error.

C:\Users\Prabhu>python C:\Users\Prabhu\Desktop\xyclops_flasher.py C:\Users\Prabhu\Desktop\bios.bin COM4
Sync failed... trying 38400 baud
Error: No communication from Xyclops. Check connections or try unplugging your Xbox for 10 seconds.

So, curious for the update.

 

 

Currently looks like this method works with A-A02

They are checking to see if there is a method to get A-B01 working

  • VIP Members
Posted (edited)
2 hours ago, Prabhu said:

I tried with my 1.6 which has A-B01 and i got this error.

C:\Users\Prabhu>python C:\Users\Prabhu\Desktop\xyclops_flasher.py C:\Users\Prabhu\Desktop\bios.bin COM4
Sync failed... trying 38400 baud
Error: No communication from Xyclops. Check connections or try unplugging your Xbox for 10 seconds.

So, curious for the update.

B01 still has communication OK so you have a problem with your setup. I expect B01 to produce an erase check fail message like ModderFokker's above.

Edited by Prehistoricman
  • Like 1
Posted
7 hours ago, Prabhu said:

I used pi pco by following  "b3ncs1post.

Try another COM ports, if you wired everything right one of them has to work.

Posted

We were fortunate enough to have 1 of our good friend sacrifice 2 Xyclops chips, A-A02 & A-B01.

From a Die / Bond wire perspective they look identical however would need X-ray / De-cap to look deeper.

What would also be good to document is the values / readings of each pin and compare the to revisions.

If anyone wants to do that & share information would be great.

A-A02.thumb.png.de6d000d19d731bffa880f0348dd90a9.png

A-B01.thumb.png.af4f47bafcf0d8aa7dccdc52698a7234.png

  • Like 1
Posted

Got it done on my console, amazing work!

I'm having video issues after having removed those resistors, my component cables I made from a set of 360 cables now do not work and I'm having trouble figuring out just what i need to do to restore that functionality.

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...