ScopeMilksop is a small (2.25" x 3") device designed to: 
 
 The intention is to facilitate rapid and repeatable changes to the content of the flash to allow new code to be tried easily. It is hoped it will be of some use to people looking to boot linux on an X-Box. The design schematics, gerbers and C & VHDL sources are being released under the GPL, others are encouraged to duplicate our design when it is proven. However, as with all GPL projects, no warrenty at all is given about the performance of this design. 
 Overview
 As you can see Milksop has three main interfaces: 
 
 
 There are in turn three main modes it is expected to find a use: 
 1) The printer port can be used to program the flash on the Milksop
   (top arrow) (working 2002-06-16) In addition there are some handy features like automatic X-Box power
   cycling after updating the flash, useful for software developers. PrinciplesIn-system flash programmingFor generic devices using TSOP flash, it is usually possible to get the rest of the devices on the bus to float their IO, either during reset or by applying appropriate levels to test pins or output enables. Milksop is generally useful in cases where there is no provision to allow flashing via the normal bus master (ie, you can't get the device CPU to do the flashing for you). Milksop is powered entirely from the TSOP device being programmed,
             not only is Milksop intended to be used without removing the
device,    but         it is intended that the device is powered.   Important note:          Milksop must not be removed from the 
    device it is programming while         power is applied.  Flash device endurance
                                                                       
       | 
              |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Qty | Type | Component ID | Description | part code | 
| 13 | 
                        100n | C101 C102 C103
C202 C203 C3 C4 C401 C402 C403 C404 C405 C406  | 
                        1206 capacitors | Farnell 644-316 | 
| 1 | 330pF | C2 | Farnell 757-251 | |
| 3 | 100uF 6V3 | C201 C105 C106 | submin electrolytic | Farnell 334-9913 | 
| 1 | 
                  10uF 6V3 | 
                  C104 | 
                  Farnell 490-659 | 
                |
| 5 | 100R | RP1 RP2 RP3 RP407 RP408 | 1206 quad respack | Farnell 196-710 | 
| 1 | 1K | RP4 | Farnell 196-770 | |
| 1 | 4K7 | RP5 | Farnell 196-812 | |
| 6 | 
                  0R - NB ECN1 | 
                  RP401 RP402 RP403 RP404 RP405 RP406  | 
                  Farnell 776-579 | 
                |
| 1 | 
                  33K | 
                  R101 | 
                  1206 single resistor | 
                  Farnell 613-885 | 
                
| 1 | 
                  470R | 
                  R102 | 
                  1206 single resistor | 
                  Farnell 613-666 | 
                
| 4 | 
                  47K | 
                  RA401..RA404 | 
                  1206 10-pin octal bussed resistor net | 
                  Farnell 335-2328 | 
                
| 1 | 
               820R - NB ECN1 | 
               RX1 | 
               1/4W 820R single resistor | 
               Farnell 509-152 | 
             
| 2 | 74HC14 | U1 U2 | SO-14 hex schmitt trigger | Farnell 379-268 | 
| 3 | 
                  74LVXC4245 | 
                  U401 U402 U403 | 
                  Octal level converter
 /  buffer | 
                  Farnell 642-526 | 
                
| 1 | XC95108PQ100C | U201 | Xilinx CPLD | RS 235-8389 | 
| 1 | BAT42 | D1 | schottky diode | Farnell 367-783 | 
| 1 | OSC20MHz | OSC1 | 8-pin DIL can Oscillator Module | Farnell 788-491 | 
| 1 | 
                  M29F080A90N1 | 
                  U102 | 
                  8Mbit flash | 
                  Farnell 333-5150 | 
                
| 2 | 
                  2SK1336 | 
                  Q1 Q2 | 
                  N-channel Mosfet | 
                  Farnell 353-024 | 
                
| 1 | 
                  LE30ABZ | 
                  U104 | 
                  3.3V regulator | 
                  Farnell 352-9990 | 
                
| 1 | DB25M | J1 | Right-angle 25-way D connector male | Farnell 892-440 | 
| 1 | HEADER8 | J3 | SIL 0.1" pitch header posts, 8 way | Farnell 671-964 | 
| 1 | LED | LED1 | Green power LED | Farnell 621-006 | 
The PCB is plated through hole and measures 2.25" x 3".
           
               
The logic to communicate with the flash using the flash protocol 
    is         contained within the CPLD.  The reasoning behind this 
is   that the         alternative, operating the flash protocol from the PC,
would  be         extremely slow given the relatively slow maximum safe operating
  speed of         the parallel port and the relative complexity of the protocol. 
           With the protocol managed by the CPLD, it requires only one printer
   port         byte transfer to write each byte.  The total chip erase/program
 and readback/verify time is 45Sec for a 1Mbit chip.
           
     The CPLD Jtag connector has the following pinouts:
| 1 | +5V | 
| 2 | TMS | 
| 3 | TDI | 
| 4 | TCK | 
| 5 | (key) | 
| 6 | TDO | 
| 7 | Gnd | 
| 8 | (no connection) | 
                      
A small commandline application performs the read, erase and write
 actions.
        
Linux version 
        
Binary RPM (installs linuxmilk
 to /usr/bin) <--- UPDATED 2002-06-25
        Sources <--- UPDATED 2002-06-25
        
If you wish to compile the sources, you will also need to download
 and install the latest linux wxwindows library from http://www.wxwindows.org
        
Windows version 
        
Milk.exe  <--- UPDATED  2002-06-25
      NTIOSUPP.DLL (needed for milk.exe)
        
Here is the VC++ project, note it requires
             Microsoft Visual C++ 6 to compile. <--- UPDATED 2002-06-25
        
If you wish to compile the sources, you will also need to download
 and install the latest win32  wxwindows library from http://www.wxwindows.org
        
1) Make sure the host 0V has a low impedence path to Earth Ground. If your host has a floating ground, like the X-Box, then you will destroy the milksop and/or your PC if you do not connect the host chassis to earth ground first. Your PC chassis, or the Earth pin of your power plug are good sources of true Earth ground. If you will be doing more than one host with this problem, I recommend connecting a sprung-loaded clip up to a mains plug Earth so you can easily ensure safety. If the above does not make any sense to you, stop what you are doing and find someone knowledgeable who can explain it to you. If you have access to an Oscilloscope, you can observe the problem by touching your scope probe to the ungrounded chassis of an X-Box and looking at the 50V p-p sine wave you see in front of you.
2) For the X-Box host, hold D0 of the flash databus to 0V and power 
 up the X-Box.  It will reset twice and on the third time stay up.  You 
 must then release D0 from ground.  You can access the D0 pin from the 
 connector that goes out to the TSOP clip.
         
3) Run milk.exe, something like this:  milk --program myfile.bin 
  This will first test that the flash can be communicated with by getting 
 its manufacturer ID and device type, and if successful will erase, program 
 and read back the contents of the device.  If milk.exe cannot detect 
 the manufacturer ID then you have a wiring or power problem.
         
4) Power down the machine, remove the TSOP clip, leave the Earth 
 Ground connection if any for safety.  Repower the host and it will be
 executing the new code.
         
|                           
                                                                        
                          
             Completed Design schematics  | 
                      ||
         In
Progress
  | 
                      ||
|                           
                                                                        
                          
             Todo  | 
                      
The amazing work of Bunnie, and folks like visor gives me encouragement with this project. Also the paid-for hackers (I believe it is Raptor and hdl) deserve a mention for their sheer hacking skills when they were the only people toiling up the mountain. Paul Bartholomew's emails have been a great help too. I salute all you people who do not give up, and make your hopes reality through sheer persistence.
¹X-Box is a registered trademark of Microsoft Corporation, nothing to do with us.