Extra cooling needed for G4 MDD Dual 1.25 w/Radeon 9800?

I'm juggling graphics cards in my G4s. Some months back, I received a G4 MDD Dual 1.25 with a Radeon 9000. I migrated all my stuff from my G4 Digital Audio over to that, including my GeForce 4Ti card, and after some downloading of drivers, I was able to get the G4 DA running with the 9000.
A short time ago, I recieved a G4 MDD Dual 1.0 Ghz with a Radeon 9800 Pro 128M card (that's what the label says, anyway...). Two things were a little different, and they are what prompt my question. First, one of the PCI slot "covers" had been removed. This could simply be that the preior owner removed a card they needed for something else, of course. And second, there was rather a lot of foam (like for chair cushions) stuffed in places. I'm thinking that was to quiet the machine down.
So anyway, if I move the 9800 into my dual 1.25, will I need to "help" the cooling in any way? I'm thinking not, but since I've never dealt with these cards before, then perhaps there is common knowledge out there I'm unaware of.
Then, I'll have a G4/DA with 1/2Ghz Sonett processor & GeForce 4Ti, and a G4 MDD Dual 1.0 Ghz with Radeon 9000 to move on to new owners...

The Radeon 9800 is a warm card, but it isn't so terrible that the MDD can't use one.
The most important step for keeping the DP MDD cool is to enable Nap mode using CHUD:
567DFEE3-A0A8-4602-9722-FCFCD76D8837.html
Another important task is to replace the thermal compound on the Radeon 9800.
The cards are all older than the thermal compound was meant to last.
16196A0F-952B-47ED-A9F9-91F7B0ECA431.html
and
C874D84E-96DD-4DFF-9566-7C66BE065BB5.html
Use Arctic Cooling MX-4.
Also use it on the processors to get additional cooling benefits.
Use of Nap mode and replacement of the thermal compound should be all that is required to avoid heat issues.
The following are all additional cooling ideas to consider.
The mention of a PCI cooler is a good one. Placed along side the Radeon, it can help to rid the case of hot air produced by the graphics card.
This one is good help with minimum noise:
http://www.xoxide.com/thermaltake-cyclo-blue-slotcooler.html
The Radeon 9800 has a minimalist fan and heatsink.
The aluminum heatsink doesn't disipate heat as fast as copper, and the fans tend to bake out and fail.
Replacement with a third party cooler is a good idea, but the design of the MDD makes that difficult.
This little Vantec cooler is a good option for the 9800 in a MDD which has the memory slots filled:
http://www.vantecusa.com/en/product/view_detail/95
If the memory slots have two 1 GB DIMMs installed in the two slots furthest from the graphics card, then this cooler is fine:
http://www.vantecusa.com/en/product/view_detail/97

Similar Messages

  • Best Video Card for my MDD Dual 1.25 and Video Editing?

    I know that this has been discussed several times before. I just never saw any real answers. I was planning to a little more intensive video editing so I got the Motion 2.1 Trial. Well, doens't allow me to install saying that my video card doesn't meet the specs. I'm confused, I read the requirements and read me files and my ATI Radeon 9800 Pro seems to meet the basic requirements. However, the About this Mac says that it doens't support Core Image.
    I guess my question is what would be my best and least expensive video card upgrade? Or is mine set up incorrectly or something? I've read elsewhere that this card should work. I'm just a little confused why it doesn't support Core Image....I may go all the way to Final Cut...Will this card work with that application?
    Any info would be great.
    Thanks.
    Robert

    Thanks and sorry for the confusion...I just realized
    that mine is only a 64mb card. It's the stock that
    came originally in the MDD dual 1.25 I believe. I
    had no idea that the same model card can have
    different amounts of memory. It still says that it's
    the ATI Radeon 9800 Pro...just 64mb and no core image
    support
    It sounds like you may be mistaken and have an Apple OEM ATI RADEON 9000 Pro. That had 64MB, was stock with the MDD, and does not support core image.
    There was also an Apple OEM ATI RADEON 9700 Pro with 128MB available as a BTO option with the MDD Dual 1.42GHz. Sometimes they pop up on eBay, although they are sought-after because they support core image and have both an ACD and DVI connection allowing for two digitally-connected LCD flat-panel monitors.
    To my knowledge there have only been 128MB and 256MB versions of the ATI RADEON 9800 Pro Mac Edition.
    PowerMac G4 MDD Dual 1.25GHz   Mac OS X (10.4.10)  

  • MDD upgrade conflict with ATI Radeon 9800

    does anyone out there have my specs; Sonnettech MDX Dual 1.6gh processor with ATI Radeon 9800 Pro VGA card? After installing the processor, i now get weird lines all over the screen at bootup and then i get a bunch of green speckles all over my desktop after the computer boots. i can work on my computer, but the screen images, speckles and other artifacts are annoying. i have dropped the hz to 66 and the screen resolution to 800x600 because higher resolutions would cause the computer to freeze. does anyone have any catalyst settings or ATI display panel suggestions ? i wish i could attach the pictures i took of the display.
    Dual Power Mac G4 867 & Macbook Pro 2gig   Mac OS X (10.4.9)   FCP Studio 5.1.2

    Well, i tried your idea, bought the iceberq5, installed it with ease and things just got worse. 1st, my MDD Dual 867 mac's AGP slot is right next to my fourth RAM slot. So with the Iceberq5 installed, i had to lose 512mb of RAM. it just wont fit. the new cooler cover the RAM slot. so instead of 2gigs of RAM, i'm down to 1.5. 2nd, with the icebeq5 on the ATI card, the door will not close. the iceberq runs into the case holding my DVD drives. After booting the computer up with the case open, the screen still loaded with the screen defects. I'm thinking I have a bad card, yet it worked when the Sonnettech dual processor upgrade was not installed. these weird color lines only occur with the sonnettech md/1.6 dual upgrade and the ATI 9800 Pro installed. I then used TechTool pro to scan and check my AGP card VRAM and it gave me an error. So here is my question, is there another powerful AGP card out there for my mac dual 867 that has a powerful fan on it that is also small enough to allow my case to close and for me to have all my RAM installed ? Thanks

  • Having trouble with my G4 MDD 867MHz DP and ATi Radeon 9800 Pro video card.

    I just recently purchased the ATi Radeon 9800 Pro Mac edition card on ebay. I installed the card on my G4 and turned it on thinking everything would work with no problems, but when I turned it on the grey apple screen came up fine and then it changed to a sky-blue screen with nothing on it and remained on that screen. My desktop or any of my apps did not load up at all. I reset the PRAM and the NVRAM as the seller I bought the card from instructed me to and still I get the same result. Is anyone familiar with this problem? I was wondering if my monitor was the problem because I'm using a Dell LCD monitor as the display for right now? I need help! I'm trying to get this up and running so I can start editing. Whatever information anyone can give me will be greatly appreciated!

    Sometimes display cards that support multiple displays (or a second display card in the same Mac) can cause the display you are using to be the SECOND display in a multiple-display "extended desktop".
    When this happens, the MenuBar and cursor may be drawn perfectly, but be on the "other" screen, and it is very difficult to determine what has happened. \[This problem is sometimes caused by inadvertently leaving an adapter or cable on an unused display port.]
    Try moving the mouse many times to the right to see if the cursor suddenly transitions onto your screen, then try the same experiment to the left.

  • What memory do I need for my G5 Dual 2.5 machine?

    I bought some PNY memory , right specs, but only to find that it was not compatible with G5 Dual's and Quad's. So, what brand is compatible with G5 Dual's? Kingston?
    Thanks!

    Assuming they are in the correct slots, there is something of a "bug" in the G5s with RAM and drives not showing up that can be remedied by zapping pram or resetting nvram. Rather common occurrence with G5s.
    Hold down command option pr (all four) from a COLD startup, and continue holding through 2 restart "bongs."
    Or hold down 4 keys command option of on any startup to get you to Open Firmware screen and type 3 commands:
    reset-nvram
    set-defaults
    reset-all
    Mac will reboot, may need to use the Option key to select the startup volume, and you will need to reset Startup Disk, whichever method you use.
    What is happening is the device tree is not getting rebuilt and is using the old settings. Clearing nvram forces or tells the system to build a new device list.
    There have been times when RAM from different batches or vendors have differed enough that they didn't "get along" or where it helped to move new higher density RAM to first pair of DIMM slots.
    If there is still a problem, try with just the new RAM and remove the old DIMMs.

  • P/N for Install discs, G4 MDD, Dual 867

    Does anyone know the Apple part numbers for the original discs that came with a Power Mac G4 MDD, Dual 867Mhz? or where to get them?
    After reading through the postings here I gather they are a MUST have to be able to boot OS9.
    If anyone knows of another way please let me know.
    Thanks,
    Jeff

    Hi, Don and Jeff. I made a list a while back that was primarily focused on the part numbers for all the retail (universal) installer CDs. I do have some model-specific discs' part numbers, but not the one for the disc you need, Jeff. Calling Apple may be the best idea. If they're out of that disc and have no record of what its number is (very unlikely, I suspect), try reposting in the PowerMac G4 forums and seeing whether someone who has the same model can supply the number for the disc. Good luck!

  • DO i need some extra hardware interface for receving both Audio and video

    hi i m doing e-learning project. i have to capture video from webcam and voice from headphone and send to client.
    but my code is working fine for either one at a time.
    DO i need some extra hardware interface for receving both Audio and video. im using code AVTransmit and AVReceive found from this site only
    After running TX
    i give Dsound:// & vfw://0 in Media Locater only sound is received and no vedio
    and when i give vfw://0 in Media Locater only live video is transmited.
    im using JMF1.1.2e.
    if any one know the method to run or cause of it plz reply me soon. i will be very thankfull
    transmiter/server side code .first run TX on server
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.media.rtp.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    public class Tx extends JFrame implements ActionListener, KeyListener,
    MouseListener, WindowListener {
    Vector targets;
    JList list;
    JButton startXmit;
    JButton rtcp;
    JButton update;
    JButton expiration;
    JButton statistics;
    JButton addTarget;
    JButton removeTarget;
    JTextField tf_remote_address;
    JTextField tf_remote_data_port;
    JTextField tf_media_file;
    JTextField tf_data_port;
    TargetListModel listModel;
    AVTransmitter avTransmitter;
    RTCPViewer rtcpViewer;
    JCheckBox cb_loop;
    Config config;
    public Tx() {
    setTitle( "JMF/RTP Transmitter");
         config= new Config();
         GridBagLayout gridBagLayout= new GridBagLayout();
         GridBagConstraints gbc;
         JPanel p= new JPanel();
         p.setLayout( gridBagLayout);
         JPanel localPanel= createLocalPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 0;
         gbc.gridy= 0;
         gbc.gridwidth= 2;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( localPanel, gbc);
         p.add( localPanel);
         JPanel targetPanel= createTargetPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 1;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( targetPanel, gbc);
    p.add( targetPanel);
         JPanel mediaPanel= createMediaPanel();
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 2;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( mediaPanel, gbc);
    p.add( mediaPanel);
    JPanel buttonPanel= new JPanel();
    rtcp= new JButton( "RTCP Monitor");
    update= new JButton( "Transmission Status");
         update.setEnabled( false);
         rtcp.addActionListener( this);
         update.addActionListener( this);
         buttonPanel.add( rtcp);
         buttonPanel.add( update);
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 3;
    gbc.gridwidth= 2;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( buttonPanel, gbc);
         p.add( buttonPanel);
    getContentPane().add( p);
         list.addMouseListener( this);
         addWindowListener( this);
    pack();
    setVisible( true);
    private JPanel createMediaPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         JLabel label= new JLabel( "Media Locator:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         tf_media_file= new JTextField( 35);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_media_file, gbc);
         p.add( tf_media_file);
         tf_media_file.setText( config.media_locator);
         cb_loop= new JCheckBox( "loop");
         startXmit= new JButton( "Start Transmission");
         startXmit.setEnabled( true);
         startXmit.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 2;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( cb_loop, gbc);
         p.add( cb_loop);
         cb_loop.setSelected( true);
         cb_loop.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( startXmit, gbc);
         p.add( startXmit);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Source");
         p.setBorder( titledBorder);
         return p;
    private JPanel createTargetPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         targets= new Vector();
         for( int i= 0; i < config.targets.size(); i++) {
         targets.addElement( config.targets.elementAt( i));
    listModel= new TargetListModel( targets);
    list= new JList( listModel);
         list.addKeyListener( this);
         list.setPrototypeCellValue( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    JScrollPane scrollPane= new JScrollPane( list,
    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
         gbc= new GridBagConstraints();
         gbc.gridx= 0;
         gbc.gridy= 0;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( scrollPane, gbc);
         p.add( scrollPane);
    JPanel p1= new JPanel();
         p1.setLayout( gridBagLayout);
         JLabel label= new JLabel( "IP Address:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
         p1.add( label);
         tf_remote_address= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_address, gbc);
         p1.add( tf_remote_address);
         label= new JLabel( "Data Port:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( label, gbc);
         p1.add( label);
         tf_remote_data_port= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( tf_remote_data_port, gbc);
         p1.add( tf_remote_data_port);     
    JPanel p2= new JPanel();
    addTarget= new JButton( "Add Target");     
    removeTarget= new JButton( "Remove Target");
         p2.add( addTarget);
         p2.add( removeTarget);
         addTarget.addActionListener( this);
         removeTarget.addActionListener( this);
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 2;
         gbc.weightx = 1.0;
         gbc.weighty = 0.0;
         gbc.gridwidth= 2;
         gbc.anchor = GridBagConstraints.CENTER;
         gbc.fill = GridBagConstraints.HORIZONTAL;
         gbc.insets = new Insets( 20,5,0,5);
         ((GridBagLayout)p1.getLayout()).setConstraints( p2, gbc);
         p1.add( p2);
         gbc= new GridBagConstraints();
         gbc.gridx= 1;
         gbc.gridy= 0;
         gbc.weightx= 1.0;
         gbc.weighty= 1.0;
         gbc.anchor= GridBagConstraints.CENTER;
         gbc.fill= GridBagConstraints.BOTH;
         gbc.insets= new Insets( 10, 5, 0, 0);
         ((GridBagLayout)p.getLayout()).setConstraints( p1, gbc);
         p.add( p1);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Targets");
         p.setBorder( titledBorder);
         return p;
    private JPanel createLocalPanel() {
    JPanel p= new JPanel();
         GridBagLayout gridBagLayout= new GridBagLayout();
    GridBagConstraints gbc;
         p.setLayout( gridBagLayout);
         JLabel label= new JLabel( "IP Address:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         JTextField tf_local_host= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 0;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_local_host, gbc);
         p.add( tf_local_host);
         try {
    String host= InetAddress.getLocalHost().getHostAddress();     
         tf_local_host.setText( host);
         } catch( UnknownHostException e) {
         label= new JLabel( "Data Port:");
         gbc= new GridBagConstraints();
         gbc.gridx = 0;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.EAST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,0,5);
         ((GridBagLayout)p.getLayout()).setConstraints( label, gbc);
         p.add( label);
         tf_data_port= new JTextField( 15);
         gbc= new GridBagConstraints();
         gbc.gridx = 1;
         gbc.gridy = 1;
         gbc.weightx = 0.0;
         gbc.weighty = 0.0;
         gbc.anchor = GridBagConstraints.WEST;
         gbc.fill = GridBagConstraints.NONE;
         gbc.insets = new Insets( 5,5,10,5);
         ((GridBagLayout)p.getLayout()).setConstraints( tf_data_port, gbc);
         p.add( tf_data_port);
         tf_data_port.setText( config.local_data_port);
         TitledBorder titledBorder= new TitledBorder( new EtchedBorder(), "Local Host");
         p.setBorder( titledBorder);
         return p;
    public void actionPerformed( ActionEvent event) {
    Object source= event.getSource();
         if( source == addTarget) {
         String ip= tf_remote_address.getText().trim();
         String port= tf_remote_data_port.getText().trim();
         String localPort= tf_data_port.getText().trim();
         addTargetToList( localPort, ip, port);
         if( avTransmitter != null) {
         avTransmitter.addTarget( ip, port);
         } else if( source == removeTarget) {
         int index= list.getSelectedIndex();
         if( index != -1) {
              Target target= (Target) targets.elementAt( index);
              if( avTransmitter != null) {
         avTransmitter.removeTarget( target.ip, target.port);
              targets.removeElement( target);
              listModel.setData( targets);          
         } else if( source == startXmit) {
         if( startXmit.getLabel().equals( "Start Transmission")) {          
         int data_port= new Integer( tf_data_port.getText()).intValue();
              avTransmitter= new AVTransmitter( this, data_port);
         avTransmitter.start( tf_media_file.getText().trim(), targets);          
              avTransmitter.setLooping( cb_loop.isSelected());
         startXmit.setLabel( "Stop Transmission");
         } else if( startXmit.getLabel().equals( "Stop Transmission")) {
              avTransmitter.stop();
              avTransmitter= null;
              removeNonBaseTargets();
              listModel.setData( targets);
         startXmit.setLabel( "Start Transmission");          
         } else if( source == rtcp) {
         if( rtcpViewer == null) {
         rtcpViewer= new RTCPViewer();
         } else {
              rtcpViewer.setVisible( true);
              rtcpViewer.toFront();
         } else if( source == cb_loop) {
         if( avTransmitter != null) {
              avTransmitter.setLooping( cb_loop.isSelected());
    private void removeNonBaseTargets() {
         String localPort= tf_data_port.getText().trim();
         for( int i= targets.size(); i > 0;) {
         Target target= (Target) targets.elementAt( i - 1);
         if( !target.localPort.equals( localPort)) {
    targets.removeElement( target);
         i--;
    public void addTargetToList( String localPort,
                             String ip, String port) {     
    ListUpdater listUpdater= new ListUpdater( localPort, ip,
                                  port, listModel, targets);
    SwingUtilities.invokeLater( listUpdater);           
    public void rtcpReport( String report) {
         if( rtcpViewer != null) {
         rtcpViewer.report( report);
    public void windowClosing( WindowEvent event) {
         config.local_data_port= tf_data_port.getText().trim();
         config.targets= new Vector();
         for( int i= 0; i < targets.size(); i++) {
         Target target= (Target) targets.elementAt( i);
         if( target.localPort.equals( config.local_data_port)) {
              config.addTarget( target.ip, target.port);
         config.media_locator= tf_media_file.getText().trim();
         config.write();
    System.exit( 0);
    public void windowClosed( WindowEvent event) {
    public void windowDeiconified( WindowEvent event) {
    public void windowIconified( WindowEvent event) {
    public void windowActivated( WindowEvent event) {
    public void windowDeactivated( WindowEvent event) {
    public void windowOpened( WindowEvent event) {
    public void keyPressed( KeyEvent event) {
    public void keyReleased( KeyEvent event) {
    Object source= event.getSource();
         if( source == list) {
         int index= list.getSelectedIndex();
    public void keyTyped( KeyEvent event) {
    public void mousePressed( MouseEvent e) {
    public void mouseReleased( MouseEvent e) {
    public void mouseEntered( MouseEvent e) {
    public void mouseExited( MouseEvent e) {
    public void mouseClicked( MouseEvent e) {
    Object source= e.getSource();
         if( source == list) {
         int index= list.getSelectedIndex();
         if( index != -1) {
              Target target= (Target) targets.elementAt( index);
              tf_remote_address.setText( target.ip);
              tf_remote_data_port.setText( target.port);
         int index= list.locationToIndex( e.getPoint());
    public static void main( String[] args) {
    new Tx();
    class TargetListModel extends AbstractListModel {
    private Vector options;
    public TargetListModel( Vector options) {
         this.options= options;
    public int getSize() {
         int size;
         if( options == null) {
         size= 0;
         } else {
         size= options.size();
         return size;
    public Object getElementAt( int index) {
    String name;
    if( index < getSize()) {
         Target o= (Target)options.elementAt( index);
    name= o.localPort + " ---> " + o.ip + ":" + o.port;
         } else {
         name= null;
         return name;
    public void setData( Vector data) {
         options= data;
         fireContentsChanged( this, 0, data.size());
    class ListUpdater implements Runnable {
    String localPort, ip, port;
    TargetListModel listModel;
    Vector targets;
    public ListUpdater( String localPort, String ip, String port,
                   TargetListModel listModel, Vector targets) {
         this.localPort= localPort;
         this.ip= ip;
         this.port= port;
         this.listModel= listModel;
         this.targets= targets;
    public void run() {
    Target target= new Target( localPort, ip, port);
         if( !targetExists( localPort, ip, port)) {
         targets.addElement( target);
    listModel.setData( targets);
    public boolean targetExists( String localPort, String ip, String port) {
         boolean exists= false;
         for( int i= 0; i < targets.size(); i++) {
         Target target= (Target) targets.elementAt( i);
         if( target.localPort.equals( localPort)
         && target.ip.equals( ip)
              && target.port.equals( port)) {          
              exists= true;
         break;
         return exists;
    >>>>>>>>>>>>>>>>>
    import java.awt.*;
    import java.io.*;
    import java.net.InetAddress;
    import java.util.*;
    import javax.media.*;
    import javax.media.protocol.*;
    import javax.media.format.*;
    import javax.media.control.TrackControl;
    import javax.media.control.QualityControl;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    public class AVTransmitter implements ReceiveStreamListener, RemoteListener,
    ControllerListener {
    // Input MediaLocator
    // Can be a file or http or capture source
    private MediaLocator locator;
    private String ipAddress;
    private int portBase;
    private Processor processor = null;
    private RTPManager rtpMgrs[];
    private int localPorts[];
    private DataSource dataOutput = null;
    private int local_data_port;
    private Tx tx;
    public AVTransmitter( Tx tx, int data_port) {
         this.tx= tx;
         local_data_port= data_port;
    * Starts the transmission. Returns null if transmission started ok.
    * Otherwise it returns a string with the reason why the setup failed.
    public synchronized String start( String filename, Vector targets) {
         String result;
         locator= new MediaLocator( filename);
         // Create a processor for the specified media locator
         // and program it to output JPEG/RTP
         result = createProcessor();
         if (result != null) {
         return result;
         // Create an RTP session to transmit the output of the
         // processor to the specified IP address and port no.
         result = createTransmitter( targets);
         if (result != null) {
         processor.close();
         processor = null;
         return result;
         // Start the transmission
         processor.start();
         return null;
    * Use the RTPManager API to create sessions for each media
    * track of the processor.
    private String createTransmitter( Vector targets) {
         // Cheated. Should have checked the type.
         PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;
         PushBufferStream pbss[] = pbds.getStreams();
         rtpMgrs = new RTPManager[pbss.length];
         localPorts = new int[ pbss.length];
         SessionAddress localAddr, destAddr;
         InetAddress ipAddr;
         SendStream sendStream;
         int port;
         SourceDescription srcDesList[];
         for (int i = 0; i < pbss.length; i++) {
         // for (int i = 0; i < 1; i++) {
         try {
              rtpMgrs[i] = RTPManager.newInstance();     
              port = local_data_port + 2*i;
              localPorts[ i]= port;
              localAddr = new SessionAddress( InetAddress.getLocalHost(),
                                  port);
              rtpMgrs.initialize( localAddr);          
              rtpMgrs[i].addReceiveStreamListener(this);
              rtpMgrs[i].addRemoteListener(this);
         for( int k= 0; k < targets.size(); k++) {
              Target target= (Target) targets.elementAt( k);
              int targetPort= new Integer( target.port).intValue();
              addTarget( localPorts[ i], rtpMgrs[ i], target.ip, targetPort + 2*i);
              sendStream = rtpMgrs[i].createSendStream(dataOutput, i);          
              sendStream.start();
         } catch (Exception e) {
              e.printStackTrace();
              return e.getMessage();
         return null;
    public void addTarget( String ip, String port) {
         for (int i= 0; i < rtpMgrs.length; i++) {
         int targetPort= new Integer( port).intValue();
         addTarget( localPorts[ i], rtpMgrs[ i], ip, targetPort + 2*i);
    public void addTarget( int localPort, RTPManager mgr, String ip, int port) {
         try {
         SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
                                  new Integer( port).intValue());
         mgr.addTarget( addr);
         tx.addTargetToList( localPort + "", ip, port + "");
         } catch( Exception e) {
         e.printStackTrace();
    public void removeTarget( String ip, String port) {
         try {     
         SessionAddress addr= new SessionAddress( InetAddress.getByName( ip),
                                  new Integer( port).intValue());
         for (int i= 0; i < rtpMgrs.length; i++) {
         rtpMgrs[ i].removeTarget( addr, "target removed from transmitter.");
         } catch( Exception e) {
         e.printStackTrace();
    boolean looping= true;
    public void controllerUpdate( ControllerEvent ce) {
         System.out.println( ce);
         if( ce instanceof DurationUpdateEvent) {
         Time duration= ((DurationUpdateEvent) ce).getDuration();
         System.out.println( "duration: " + duration.getSeconds());
         } else if( ce instanceof EndOfMediaEvent) {
         System.out.println( "END OF MEDIA - looping=" + looping);
         if( looping) {
         processor.setMediaTime( new Time( 0));
              processor.start();
    public void setLooping( boolean flag) {
         looping= flag;
    public void update( ReceiveStreamEvent event) {
         String timestamp= getTimestamp();
         StringBuffer sb= new StringBuffer();
         if( event instanceof InactiveReceiveStreamEvent) {
         sb.append( timestamp + " Inactive Receive Stream");
         } else if( event instanceof ByeEvent) {
         sb.append( timestamp + " Bye");
         } else {
         System.out.println( "ReceiveStreamEvent: "+ event);
         tx.rtcpReport( sb.toString());     
    public void update( RemoteEvent event) {     
         String timestamp= getTimestamp();
         if( event instanceof ReceiverReportEvent) {
         ReceiverReport rr= ((ReceiverReportEvent) event).getReport();
         StringBuffer sb= new StringBuffer();
         sb.append( timestamp + " RR");
         if( rr != null) {
              Participant participant= rr.getParticipant();
              if( participant != null) {
              sb.append( " from " + participant.getCNAME());
              sb.append( " ssrc=" + rr.getSSRC());
              } else {
              sb.append( " ssrc=" + rr.getSSRC());
              tx.rtcpReport( sb.toString());
         } else {
         System.out.println( "RemoteEvent: " + event);
    private String getTimestamp() {
         String timestamp;
         Calendar calendar= Calendar.getInstance();
         int hour= calendar.get( Calendar.HOUR_OF_DAY);
         String hourStr= formatTime( hour);
         int minute= calendar.get( Calendar.MINUTE);
         String minuteStr= formatTime( minute);
         int second= calendar.get( Calendar.SECOND);
         String secondStr= formatTime( second);
         timestamp= hourStr + ":" + minuteStr + ":" + secondStr;     
         return timestamp;
    private String formatTime( int time) {     
         String timeStr;
         if( time < 10) {
         timeStr= "0" + time;
         } else {
         timeStr= "" + time;
         return timeStr;
    * Stops the transmission if already started
    public void stop() {
         synchronized (this) {
         if (processor != null) {
              processor.stop();
              processor.close();
              processor = null;
         for (int i= 0; i < rtpMgrs.length; i++) {
         rtpMgrs[ i].removeTargets( "Session ended.");
              rtpMgrs[ i].dispose();
    public String createProcessor() {
         if (locator == null) {
         return "Locator is null";
         DataSource ds;
         DataSource clone;
         try {
         ds = javax.media.Manager.createDataSource(locator);
         } catch (Exception e) {
         return "Couldn't create DataSource";
         // Try to create a processor to handle the input media locator
         try {
         processor = javax.media.Manager.createProcessor(ds);
         processor.addControllerListener( this);     
         } catch (NoProcessorException npe) {
         return "Couldn't create processor";
         } catch (IOException ioe) {
         return "IOException creating processor";
         // Wait for it to configure
         boolean result = waitForState(processor, Processor.Configured);
         if (result == false)
         return "Couldn't configure processor";
         // Get the tracks from the processor
         TrackControl [] tracks = processor.getTrackControls();
         // Do we have atleast one track?
         if (tracks == null || tracks.length < 1)
         return "Couldn't find tracks in processor";
         // Set the output content descriptor to RAW_RTP
         // This will limit the supported formats reported from
         // Track.getSupportedFormats to only valid RTP formats.
         ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
         processor.setContentDescriptor(cd);
         Format supported[];
         Format chosen;
         boolean atLeastOneTrack = false;
         // Program the tracks.
         for (int i = 0; i < tracks.length; i++) {
         Format format = tracks[i].getFormat();
         if (tracks[i].isEnabled()) {
              supported = tracks[i].getSupportedFormats();
              // We've set the output content to the RAW_RTP.
              // So all the supported formats should work with RTP.
              // We'll just pick the first one.
              if (supported.length > 0) {
              if (supported[0] instanceof VideoFormat) {
                   // For video formats, we should double check the
                   // sizes since not all formats work in all sizes.
                   chosen = checkForVideoSizes(tracks[i].getFormat(),
                                       supported[0]);
              } else
                   chosen = supported[0];
              tracks[i].setFormat(chosen);
              System.err.println("Track " + i + " is set to transmit as:");
              System.err.println(" " + chosen);
              atLeastOneTrack = true;
              } else
              tracks[i].setEnabled(false);
         } else
              tracks[i].setEnabled(false);
         if (!atLeastOneTrack)
         return "Couldn't set any of the tracks to a valid RTP format";
         // Realize the processor. This will internally create a flow
         // graph and attempt to create an output datasource for JPEG/RTP
         // audio frames.
         result = waitForState(processor, Controller.Realized);
         if (result == false)
         return "Couldn't realize processor";
         // Set the JPEG quality to .5.
         setJPEGQuality(processor, 0.5f);
         // Get the output data source of the processor
         dataOutput = processor.getDataOutput();
         return null;
    static SessionAddress destAddr1, destAddr2;
    * For JPEG and H263, we know that they only work for particular
    * sizes. So we'll perform extra checking here to make sure they
    * are of the right sizes.
    Format checkForVideoSizes(Format original, Format supported) {
         int width, height;
         Dimension size = ((VideoFormat)original).getSize();
         Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
         Format h263Fmt = new Format(VideoFormat.H263_RTP);
         if (supported.matches(jpegFmt)) {
         // For JPEG, make sure width and height are divisible by 8.
         width = (size.width % 8 == 0 ? size.width :
                        (int)(size.width / 8) * 8);
         height = (size.height % 8 == 0 ? size.height :
                        (int)(size.height / 8) * 8);
         } else if (supported.matches(h263Fmt)) {
         // For H.263, we only support some specific sizes.
         if (size.width < 128) {
              width = 128;
              height = 96;
         } else if (size.width < 176) {
              width = 176;
              height = 144;
         } else {
              width = 352;
              height = 288;
         } else {
         // We don't know this particular format. We'll just
         // leave it alone then.
         return supported;
         return (new VideoFormat(null,
                        new Dimension(width, height),
                        Format.NOT_SPECIFIED,
                        null,
                        Format.NOT_SPECIFIED)).intersects(supported);
    * Setting the encoding quality to the specified value on the JPEG encoder.
    * 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {
         Control cs[] = p.getControls();
         QualityControl qc = null;
         VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);
         // Loop through the controls to find the Quality control for
         // the JPEG encoder.
         for (int i = 0; i < cs.length; i++) {
         if (cs[i] instanceof QualityControl &&
              cs[i] instanceof Owned) {
              Object owner = ((Owned)cs[i]).getOwner();
              // Check to see if the owner is a Codec.
              // Then check for the output format.
              if (owner instanceof Codec) {
              Format fmts[] = ((Codec)owner).getSupportedOutputFormats(null);
              for (int j = 0; j < fmts.length; j++) {
                   if (fmts[j].matches(jpegFmt)) {
                   qc = (QualityControl)cs[i];
                   qc.setQuality(val);
                   System.err.println("- Setting quality to " +
                             val + " on " + qc);
                   break;
              if (qc != null)
              break;
    * Convenience methods to handle processor's state changes.
    private Integer stateLock = new Integer(0);
    private boolean failed = false;
    Integer getStateLock() {
         return stateLock;
    void setFailed() {
         failed = true;
    private synchronized boolean waitForState(Processor p, int state) {
         p.addControllerListener(new StateListener());
         failed = false;
         // Call the required method on the processor
         if (state == Processor.Configured) {
         p.configure();
         } else if (state == Processor.Realized) {
         p.realize();
         // Wait until we get an event that confirms the
         // success of the method, or a failure event.
         // See StateListener inner class
         while (p.getState() < state && !failed) {
         synchronized (getStateLock()) {
              try {
              getStateLock().wait();
              } catch (InterruptedException ie) {
              return false;
         if (failed)
         return false;
         else
         return true;
    * Inner Classes
    class StateListener implements ControllerListener {
         public void controllerUpdate(ControllerEvent ce) {
         // If there was an error during configure or
         // realiz

    I do this all the time, I put my MBP to a 60 inch Sharp. If you have the video working do the simple thing first. Check to make sure your sound is on your TV and Mac. Then if that doesn't work go to System Prefrences and under sound go to a tab called Output and see if your TV is listed and if it is change it to that setting
    Hope It Works

  • Recommendations? USB 2.0 & Firewire PCI card for MDD Dual Boot G4 (1.25 Ghz

    Can anyone recommend a good USB 2.0 and Firewire combo PCI card? (at least 3 USB 2.0 ports and 2 FW) for my G4 MDD Dual Boot- 1.25 Ghz)?
    I have an Orangelink+ Micro USB 2.0/FW PCI card from the days of OS 9- that's supposed to be USB 2.0 under OS X, but isn't (it shows up as max 12/mbps in System Profiler). I'd like to get an external Hard Drive and most of them are USB 2.0 now.
    Another question:
    Under system profiler, it shows that I have one USB 2.0 port. I'm assuming it's an internal port, because all of the external ports show transfer rates of 12mbps. Is this a correct assumption?
    Thanks in advance for any help!

    Sorry. Posted in wrong section.
    Reposted in "Expanding" section.
    Moderator- feel free to delete.

  • What kind of wireless card I need for my Power Mac G5 (late 2005) Dual 2 GH

    hi there,
    I have for sometime now a "Power Mac G5 (late 2005) Dual 2 GHz PowerPC G5", and recently I have been thinking to get an Airport extreme wireless card with a bluetooth on it, which could work on my machine.
    I have already try to deal with apple representatives and Apple sales people to give me a hand on the matter and so far is been a nightmare to approach this guys, tired of wasting time and effort, so that is way I am posting a topic on this section to see if you guys could give a hand on the matter.
    All what I would like to know is what kind of wireless card I need for my Power Mac G5 (late 2005) Dual 2 GHz PowerPC G5 (version 10.4.11) and where I could buy one on line to install myself.
    This is the mac unit I have.
    Dual 2 GHz PowerPC G5.
    Hardware Overview:
    Machine Name: Power Mac G5
    Machine Model: PowerMac11,2
    CPU Type: PowerPC G5 (1.1)
    Number Of CPUs: 2
    CPU Speed: 2 GHz
    L2 Cache (per CPU): 1 MB
    Memory: 4.5 GB
    Bus Speed: 1 GHz
    Boot ROM Version: 5.2.7f1
    Thanks for you time.
    regards
    Toyko koyko

    You're welcome. Funny how Apple works isn't it? If it's any consolation, that Airport/Bluetooth card doesn't show up on the Apple U.S. store either. I don't think they ever intended it to be a user installable part, so perhaps that's why they don't offer it for sale. Do you have any Apple Authorized Service providers in your area? I'd think they'd be able to order the card as a replacement part.
    Can you give a little more detail or a link to the gadget you're referring to? It sounds like a USB dongle to enable Wi-Fi, but that must be a third party solution, since I don't believe Apple ever offered something like that.

  • Absolute best, fastest graphic for MDD dual 1.25

    Hey whats the best graphics card that will work with my mdd dual 1.25 firewire 800?
    I read the geforce 8600 ultra would work but everyone selling them states its for a G5 only?
    Any way i want a 256mb card, japamac i know you have some suggestions...
    Thanks

    Hi-
    The Geforce 6800 GT or Ultra, unfortunately for you, is not compatible with the MDD or FW800 machine.
    There is a peculiarity with the MDD that makes the 6800 incompatible.
    So, to answer your question, the very best card for your MDD is either a Geforce 7800 GS or a Radeon X800XT.
    Unless the Radeon X800 is a FireGL model, all flashed Radeon cards only output analog.
    The FireGL X800 outputs digital through both DVI ports.

  • Need videocard that supports dual monitors and Rotation -for PowerMac G5

    I'm looking for a videocard that supports dual monitors and Rotation for PowerMac G5. I've got two Dell 2407WFP monitors rotated to 90 -I've been running an ATI Radeon X1900 256 pcie16 but apparently it is over heating -not even exactly sure if that indeed is the case but all the symptoms I've looked up online point to this problem. Anyways -just looking for a card that will do the job -I don't run games -this is just for work machine doing photoshop and related programs. Thanks for any help anyone may have!

    Hi-
    A flashed card is a WinPC card that has been modified to accept a Mac ROM to provide for Mac compatibility.
    Occasionally, soldering and other physical modifications are required.
    Without this modification, a WinPC graphics card cannot be used in a MAc.
    Without this modification, Mac users are limited to only a handful of used, OEM options.
    The Geforce 7800 GS is the only 7800 card that may be used in a G5 (or G4).
    The card must have been or be converted to Mac compatibility.
    For dual monitors (DVI) the best performance choices are the Geforce 6800 Ultra (flashed or OEM), a rare, but occasionally available Geforce 6800 GT (flashed), an OEM Radeon X800XT (use ADC/DVI adapter on ADC port) a rare and expensive Radeon FireGL X800 (flashed).
    These are the only performance oriented cards to offer dual digital display support.
    For less demanding graphics work, an OEM Radeon 9650 offers dual digital output.
    Other OEM graphics cards will have either DVI/DVI or ADC/DVI.
    All OEM graphics cards are only available as used.
    All cards are easiest to obtain on eBay.
    Prices vary, but deals can be found.
    Expect to pay $150-$325 for any of the cards listed.
    Any card considered MUST be stated as Mac compatible, unless you are willing to research and learn how to perform the necessary modifications.

  • Overclocking a G4 MDD dual 1.42 to 1.67

    I have a G4 MDD dual 1.42ghz and would very much like to overclock it to 1.67ghz. I've read several places that it can be done but needs a voltage increase and lots of extra cooling. All of that is fine but I was wondering if anyone out there has attempted this particular overclock and what success you had?
    If I did this what would the voltage setting need to be upped to?
    Any and all info on this would be much appreciated.  Also, I realize this could totally waste my board but I'm willing to risk it if I can get the right specifics on the "proper" way of going about it.
    Many thanks in advance.

    Stability varies with chip quality. The 1.42 chips were of the better quality within the yield, and many of those allowed easy OC to 1.5 GHz (think GigaDesigns) and some chips even to 1.58 GHz without a voltage mod.
    The trouble with the 1.58 GHz (and faster) clocks is that they greatly shorten the chips life, tend to have stability issues, but, most assuredly, require more intensive cooling methods.
    Complicating this is the difficulty to increase cooling efficiency or use aftermarket coolers in the MDD case.
    Moving the guts to an ATX case or a G5 case allows easier cooling mods to accomodate the heat from OC efforts.
    All OC efforts are a YMMV scenario because of the variables involved.
    If you must, up the cooling and do a conservative OC to 1.5 GHz. That's plenty fast and has proven stable for many an OC'er.

  • G4 mdd dual self shut down

    Hi guys.
    I need your help to solve this problem:
    my dual G4 mdd 1,42 random shut down by itself.
    It always happens during a cold start (never when running) and always at the same point, I mean just after grey screen spinning cursor (at the very start of blue sreen) So I reboot and my Mac start up normally, even more fast than normal behaviour, about 5 or 6 seconds less and desktop appears.
    The machine is a little overloaded, 3 HD, 3 extra fan inside (2 on PCI slot), Radeon 9800 connected to Hd molex for power the video card.
    The PSU is 360 watts.
    Any ideas?
    Thank you all for reading this post
    Rob

    Hi-
    Welcome to Discussions!
    Replace the power cord. If this doesn't alleviate the condition, (from your description) I would consider the PSU to be the most likely suspect.

  • MDD Dual 867MHz CPU Overheating

    MDD Dual 867MHz CPU Overheating
    I have noted the large number of problems with this particular model and heat issues, but I just received this stripped MDD to do an upgrade on the cheap for my B&W G3 server. In hindsight this might not have been the best unit to upgrade with, but for $72 on ebay (seller was unsure it was dual processor--which may have helped lack of bidding), I figured it was worth it.
    After putting RAM to 2GB, putting in an ATI 9200 PCI graphics card, and inserting my HDs from the B&W with updated Tiger installed, everything booted fine with no problems. Dual processors checked out, RAM was fine, and all drives loaded without glitch.
    Next go round, after 20-30 minutes it does the sleep/freeze thing everyone has mentioned here and elsewhere. All fans work and have tested with door open and high speed fan directly over heat sink and it still shuts down. Temperature Monitor has it rising above 80c and climbing, which I no longer let go until "closing" to avoid any more damage.
    The weird thing about this is that during all of this, the aluminum heat sink remains relatively cool, as if it is not making any contact.
    Is it possible it just needs a pad or compound to make contact and dissipate the heat through the sink etc., or does this sound like either a faulty sensor or failing CPU? The compound would be an easy fix (and it sounds logical), but I may just be missing the obvious here. My hope is that the prior owner just did not bother to find out why it did this and cannibalized the unit.
    I could take out all the drives, etc. to reduce the heat build up, but I want this to function as a feasible house server that can be left on most of the time + because of the cool heat sink the behavior does not seem to relate to the heat in the housing.
    Any and all help will be most welcome.

    I think you've nailed it there. Definitely sounds like a poor contact between the CPU and the heat sink.
    The sinks do get quite warm, and the CPU seems to low about 52 C, average 59.5 C when busy and top out at 62 C.
    It's a great machine, so if you can lay your hands on some thermite glue and effect the repair, you'll be on to a winner. $72, you lucky so-and-so.

  • Does 10.5.6 Support Dual displays for Radeon 9800 Pro Mac Edition cards?

    Does 10.5.6 Support Dual displays for Radeon 9800 Pro Mac Edition cards?
    And is there driver updates for anyone using the all-in-ones HP printers...has anyone been able to use their scanners since the update? and has the dual screen support been added to avoid the blue screen on startup?

    The ATI Radeon 9600 PC/Mac edition 256 MB should work in the MDD G4. It has two DVI ports (one is dual-link and can support a 30" display). You will need adapters for ADC displays.

Maybe you are looking for