pinewell's farmer blog 農業と電子工作、ソフトウェア、バイク、車

2014年1月29日

T221の3840x2400x48Hzビッグデスクトップ化。Eyefinityの制限?により失敗。

Filed under: その他,副業 — pinewell @ 2:25 PM

CDU2150Aの3840x2400x33Hzビッグデスクトップ化が成功したので、T221でのそれを試したく。

3840x2400x48Hz化は

LFH-60 -> DualLinkDVI で 2624x2400x48Hzを一つ。

LFH-60 -> T221純正ケーブル -> SingleLink DVI で 1216x2400x48Hzを一つ。

T221のEDID006の設定で容易にできる。

 

問題はこれを一つのディスプレイとしての設定。

このままの設定でEyefinityを用いてディスプレイグループを作成しても、3840×2400の一つの画面とはできないようだ。

EDIDの余計なデータが邪魔をしているからなのかと思い、色々EDIDを試してみたが出来なかった。

2624x2400x48Hzの一画面となってしまう。

1920×2400 + 1920×2400 もしくは 1920×1200 を4つなど同じ大きさでなければダメなようだ。

今手持ちのケーブルでできるのは DualLinkで1920×2400 ひとつ、純正ケーブルで 1920×1200(もしくは960×2400)を2つ。

だが、7790で出力を3つ使うと1920×1080のE2210HDSが繋げない。

DisplayPort-HDMIアクティブ変換もeBayで購入したのだが不良品のため使えず。

できればLFH-60 -> DualLinkDVI のケーブルをもう一つ買えばよいのだが・・・。これまた7,800もする・・・。

CDU2150Aを33Hz化。

Filed under: その他,副業 — pinewell @ 2:04 PM

EEPROM購入の本筋であるCDU2150Aの33Hz化。

まずは1920x2400x33HzのEDIDデータの作成をしなければ。

いろいろ調べてpixelclockをDVI-SingleLinkの上限である165MHzに設定すれば可能そうだ。

EDID Managerで取得したバイナリデータを元に、DetailViewタブで該当のデータを探す。

デフォルトでは BC 34 となっている部分。リトルエンディアンなので? 34BCを16進->10進すると13500。

デフォルトのピクセルクロックは135.00MHzとなっているのでこれを書き換え。16500を16進で4074。

ツールを切り替え、MonitorAssetManagerでバイナリデータの書き換えを行う。

チェックサムデータも自動で計算してくれるので楽チン。BC34の部分を7440として保存。

例によってraspiでEEPROMの書き込んで33Hz化したEDIDROMの完成。

 

これをDVI-SingleLinkケーブルを改造して取り付ける。

IMG_3752こんな感じになった。

これを2本作成。

テスト後、ホットボンドで固めた。

 

 

 

 

IMG_3753

無事に 3840x2400x33Hz化に成功。

 

 

 

 

 

手間はかかったが、某オークションで7,800円の品を格安で作成できた。部材費だけなら1,000円以下。

2014年1月28日

DVIディスプレイ切替器の改造

Filed under: その他,副業 — pinewell @ 7:00 PM

L465はミニD-Sub15ピンとDVIの入力があるのでこれまではFedora20機ではミニD-Sub15ピンで繋いでいた。
CDU2150Aの購入で使用しなくなったGeForce650TiをFedora機へ移行。せっかくだからDVIで繋ごうと考えた。
eBayで買ったDVIの切替器。機械式のスイッチで余り長いこと使用できるとも思えないのだが、DVIの切替器
としては格安で購入できた。
だが、案の定EDIDの保持を行えない。切り替えるたびにモニタの切り離しが行われるため非常に使い勝手が悪い。

EEPROMを多めに買っているので検索して出てきた情報をもとに改造を行う。
IMG_3742

 

 

 

 

 

 

左に見えているのが処置後。EEPROMは差し替えができるようにソケットで接続した。

EDIDデータはEDID Managerでレジストリより収集したL465そのもののデータ。

IMG_3744IMG_3743

 

 

 

 

 

 

 

ホットボンドで適当に固めている。

IMG_3745CPUへ繋ぐ側の両方に処置して出来上がり。

 

 

 

 

 

 

これでCPU側はモニターが繋がっていなくてもつながっていると認識して、画を送り続けることになる。

スイッチによる切替で実際に移したいものを選択すればよい。

2014年1月27日

EDIDのoverride。

Filed under: その他,副業 — pinewell @ 6:55 PM

T221やCDU2150Aをより快適に使うにあたりに問題となるEDID。
某オークションにEDIDのoverrideする延長ケーブル、ROMが出品されているのだがいかんせん安くない。
T221購入時にoverrideケーブル、ROMx3個は購入したのだが。
実際のところ、どれが自分の環境に一番適しているか取っ替え引っ替えしたいのでコスパが悪い。

少し調べてみるとEDIDに使用されているEEPROMはI2Cで通信、データの保存をしているそうだ。
パソコンでの書き込みはパラレルポートを使用してトランジスタ2個と抵抗いくつかで自作できるようだ。
パラレルポートがあるPCが既に無いのでガレージに積んであった古いノートPCを復活させようと思ったが、
コンデンサがイカレているのか、OSインストール中に突然電源が落る。これは使えないと判断。

さらに調べる。
I2CといえばウチにはarduinoもRaspberryPiもあるぞ、もしかして書き換えできるのでは?
と、思ってしまった。
arduino I2C EEPROM で検索すると日本語ページで確かにある。こうなると試してみないと気が済まない。
arduinoで読み出し成功。書き込みはなぜかうまくいかない。
raspberrypi I2C EEPROM で英語のページを発見。
こちらでも読み出しは成功。
なぜ書き込みができないのか?使用しているEEPROMにプロテクトでもかかっているのだろう、と勝手に判断。

まぁ、読めるのなら書き込みもなんとかすればうまくゆくのだろうと、部材を発注。
某サイトにて Microchipの24LC01B/P。1個28円!。20個購入。8pinのICソケットも10個。

これ、さらっと書いているけどEEPROMの選定についてもいろいろ調べた。恐らくこれで大丈夫だろう…の見切り発車。
で、本日到着。うまく行ったので手順をまとめる。

取り敢えずテストなのでEEPROMに書き込むためのデータはExtron Electronicsが無償で配布している(登録が必要)
EDID ManagerをWindows8.1機にインストールしてこれを使用してファイルに保存。いろいろなソフトを試したが、
(編集こそできないが)これが一番使いやすい。
ちなみに現在T221には3840x2400x34HzのEDID乗っ取りoverrideケーブルで繋いでいるので、このROMデータを直接
読んでも同じデータとなる。うまくいったのかどうかはとりあえずこれのコピーを作れば確認ができる。

raspiとEEPROMの接続はこう。
raspi-eeprom
SCLとSDAを繋ぎ1kΩでプルアップ。電源は3.3V。
raspiでのEEPROM読み書きソフトは以下より。
https://github.com/dgallot/i2c-tools/tree/master/eepromer/
eeprom.cをダウンロードして、EEPROMのサイズにあわせて適宜編集。
24LC01なら DEFAULT_NUM_PAGES を 8,BYTES_PER_PAGE を128,MAX_BYTES を8 に変更。
raspiでのi2cデバイスの有効化は検索すればでてくる。
http://www.gallot.be/?p=180 このページを参考にしたが、ワシの環境では /dev/i2c-1 である必要があった。

#i2cdetect -y -a 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- --  
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  

で50~にEEPROMが認識されていると言うことだと思う。

読み出し。-p 2は1ページ128bytex2で256byte分。 -f で 読み出し先ファイル名。

# ./eeprom -p 2 -f EDID.bin
base-address of eeproms       : 0x50
number of pages to read       : 2 (0x50 .. 0x51)
file opened for writing       : EDID.bin
            on filedescriptor : 3
i2c-devicenode is             : /dev/i2c-1
            on filedescriptor : 4
Read 8 bytes from eeprom at 0x50, offset 00000000
---割愛---

書き込み。

#./eeprom -w -p 2 -f EDID.bin 
base-address of eeproms       : 0x50
number of pages to read       : 2 (0x50 .. 0x51)
file opened for reading       : EDID_CDU2150A_256byte.bin
            on filedescriptor : 3
i2c-devicenode is             : /dev/i2c-1
            on filedescriptor : 4

**WARNING**
 -      You have chosen to WRITE to this eeprom.
        Make sure that this tiny chip is *NOT* vital to the
        operation of your computer as you can easily corrupt
        the configuration memory of your SDRAM-memory-module,
        your IBM ThinkPad or whatnot...! Fixing these errors can be
        a time-consuming and very costly process!

Things to consider:
 -      You can have more than one i2c-bus, check in /proc/bus/i2c
        and specify the correct one with -d
        right now you have chosen to use '/dev/i2c-1'
 -      A eeprom can occupy several i2c-addresses (one per page)
        so please make sure that there is no vital eeprom in your computer
        sitting at addresses between 0x50 and 0x51
Enter 'yes' to continue:yes
Wrote 8 bytes to eeprom at 0x50, offset 00000000
...... acked 
Wrote 8 bytes to eeprom at 0x50, offset 00000008
...... acked 
割愛

書き込まれたデータはきちんと読み出しできるか確認して実際にoverrideケーブルに付けてみる。
ドキドキしながらT221接続PCの電源をいれるとあっさり映る。成功。
EEPROMも手に入ったしデータの書き込みも確認できたのであとはDVIケーブルを
ハードオフで買って来てROMを乗っければEDID乗っ取りケーブルの出来上がり、と。

EDIDデータの作成もめんどうそうだが…..

githubで公開されているし、多分大丈夫だと思うので以下 eeprom.c の全ソース。

/*
This program is hereby placed into the public domain.
Of course the program is provided without warranty of any kind.

Downloaded from http://www.lm-sensors.org/browser/i2c-tools/trunk/eepromer/eeprom.c

*/
#include <sys/ioctl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <time.h>
#include <linux/i2c-dev.h>

/*
  this program can read 24C16 (and probably smaller ones, too)
  I wrote it as a quick and dirty hack because my satellite receiver
  hung again... so I had to reprogram the eeprom where is stores it's
  settings.
 */

#define DEFAULT_I2C_BUS      "/dev/i2c-0"
#define DEFAULT_EEPROM_ADDR  0x50         /* the 24C16 sits on i2c address 0x50 */
#define DEFAULT_NUM_PAGES    8            /* we default to a 24C16 eeprom which has 8 pages */
#define BYTES_PER_PAGE       256          /* one eeprom page is 256 byte */
#define MAX_BYTES            16            /* max number of bytes to write in one chunk */
       /* ... note: 24C02 and 24C01 only allow 8 bytes to be written in one chunk.   *
        *  if you are going to write 24C04,8,16 you can change this to 16            */

/* write len bytes (stored in buf) to eeprom at address addr, page-offset offset */
/* if len=0 (buf may be NULL in this case) you can reposition the eeprom's read-pointer */
/* return 0 on success, -1 on failure */
int eeprom_write(int fd,
		 unsigned int addr,
		 unsigned int offset,
		 unsigned char *buf,
		 unsigned char len
){
	struct i2c_rdwr_ioctl_data msg_rdwr;
	struct i2c_msg             i2cmsg;
	int i;
	char _buf[MAX_BYTES + 1];

	if(len>MAX_BYTES){
	    fprintf(stderr,"I can only write MAX_BYTES bytes at a time!\n");
	    return -1;
	}

	if(len+offset >256){
	    fprintf(stderr,"Sorry, len(%d)+offset(%d) > 256 (page boundary)\n",
			len,offset);
	    return -1;
	}

	_buf[0]=offset;    /* _buf[0] is the offset into the eeprom page! */
	for(i=0;i<len;i++) /* copy buf[0..n] -> _buf[1..n+1] */
	    _buf[1+i]=buf[i];

	msg_rdwr.msgs = &i2cmsg;
	msg_rdwr.nmsgs = 1;

	i2cmsg.addr  = addr;
	i2cmsg.flags = 0;
	i2cmsg.len   = 1+len;
	i2cmsg.buf   = _buf;

	if((i=ioctl(fd,I2C_RDWR,&msg_rdwr))<0){
	    if ( len > 0 ) {
	      perror("ioctl()");
	      fprintf(stderr,"ioctl returned %d\n",i);
            }
	    return -1;
	}

	if(len>0)
	    fprintf(stderr,"Wrote %d bytes to eeprom at 0x%02x, offset %08x\n",
		    len,addr,offset);
	return 0;
}

/* read len bytes stored in eeprom at address addr, offset offset in array buf */
/* return -1 on error, 0 on success */
int eeprom_read(int fd,
		 unsigned int addr,
		 unsigned int offset,
		 unsigned char *buf,
		 unsigned char len
){
	struct i2c_rdwr_ioctl_data msg_rdwr;
	struct i2c_msg             i2cmsg;
	int i;

	if(len>MAX_BYTES){
	    fprintf(stderr,"I can only write MAX_BYTES bytes at a time!\n");
	    return -1;
	}

	if(eeprom_write(fd,addr,offset,NULL,0)<0)
	    return -1;

	msg_rdwr.msgs = &i2cmsg;
	msg_rdwr.nmsgs = 1;

	i2cmsg.addr  = addr;
	i2cmsg.flags = I2C_M_RD;
	i2cmsg.len   = len;
	i2cmsg.buf   = buf;

	if((i=ioctl(fd,I2C_RDWR,&msg_rdwr))<0){
	    perror("ioctl()");
	    fprintf(stderr,"ioctl returned %d\n",i);
	    return -1;
	}

	fprintf(stderr,"Read %d bytes from eeprom at 0x%02x, offset %08x\n",
		len,addr,offset);

	return 0;
}



int main(int argc, char **argv){
    int i,j;

    /* filedescriptor and name of device */
    int d; 
    char *dn=DEFAULT_I2C_BUS;

    /* filedescriptor and name of data file */
    int f=-1;
    char *fn=NULL;

    unsigned int addr=DEFAULT_EEPROM_ADDR;
    int rwmode=0;
    int pages=DEFAULT_NUM_PAGES;

    int force=0; /* suppress warning on write! */
    int wait = 0;
    int acked = 0;
    
    while((i=getopt(argc,argv,"d:a:p:wyf:h"))>=0){
	switch(i){
	case 'h':
	    fprintf(stderr,"%s [-d dev] [-a adr] [-p pgs] [-w] [-y] [-f file]\n",argv[0]);
	    fprintf(stderr,"\tdev: device, e.g. /dev/i2c-0    (def)\n");
	    fprintf(stderr,"\tadr: base address of eeprom, eg 0xA0 (def)\n");
	    fprintf(stderr,"\tpgs: number of pages to read, eg 8 (def)\n");
	    fprintf(stderr,"\t-w : write to eeprom (default is reading!)\n");
	    fprintf(stderr,"\t-y : suppress warning when writing (default is to warn!)\n");
	    fprintf(stderr,"\t-f file: copy eeprom contents to/from file\n");
	    fprintf(stderr,"\t         (default for read is test only; for write is all zeros)\n");
	    fprintf(stderr,"Note on pages/addresses:\n");
	    fprintf(stderr,"\teeproms with more than 256 byte appear as if they\n");
	    fprintf(stderr,"\twere several eeproms with consecutive addresses on the bus\n");
	    fprintf(stderr,"\tso we might as well address several separate eeproms with\n");
	    fprintf(stderr,"\tincreasing addresses....\n\n");
	    exit(1);
	    break;
	case 'd':
	    dn=optarg;
	    break;
	case 'a':
	    if(sscanf(optarg,"0x%x",&addr)!=1){
		fprintf(stderr,"Cannot parse '%s' as addrs., example: 0xa0\n",
			optarg);
		exit(1);
	    }
	    break;
	case 'p':
	    if(sscanf(optarg,"%d",&pages)!=1){
		fprintf(stderr,"Cannot parse '%s' as number of pages, example: 8\n",
			optarg);
		exit(1);
	    }
	    break;
	case 'w':
	    rwmode++;
	    break;
	case 'f':
	    fn=optarg;
	    break;
	case 'y':
	    force++;
	    break;
	}

    }
   
    fprintf(stderr,"base-address of eeproms       : 0x%02x\n",addr);
    fprintf(stderr,"number of pages to read       : %d (0x%02x .. 0x%02x)\n",
		    pages,addr,addr+pages-1);

    if(fn){
	if(!rwmode) /* if we are reading, *WRITE* to file */
	    f=open(fn,O_WRONLY|O_CREAT,0666);
	else /* if we are writing to eeprom, *READ* from file */
	    f=open(fn,O_RDONLY);
	if(f<0){
	    fprintf(stderr,"Could not open data-file %s for reading or writing\n",fn);
	    perror(fn);
	    exit(1);
	}
	fprintf(stderr,"file opened for %7s       : %s\n",rwmode?"reading":"writing",fn);
	fprintf(stderr,"            on filedescriptor : %d\n",f);
    }

    if((d=open(dn,O_RDWR))<0){
	fprintf(stderr,"Could not open i2c at %s\n",dn);
	perror(dn);
	exit(1);
    }

    fprintf(stderr,"i2c-devicenode is             : %s\n",dn);
    fprintf(stderr,"            on filedescriptor : %d\n\n",d);

    /***
     *** I'm not the one to blame of you screw your computer!
     ***/
    if(rwmode && ! force){
	unsigned char warnbuf[4];
	fprintf(stderr,"**WARNING**\n");
	fprintf(stderr," - \tYou have chosen to WRITE to this eeprom.\n");
	fprintf(stderr,"\tMake sure that this tiny chip is *NOT* vital to the\n");
	fprintf(stderr,"\toperation of your computer as you can easily corrupt\n");
	fprintf(stderr,"\tthe configuration memory of your SDRAM-memory-module,\n");
	fprintf(stderr,"\tyour IBM ThinkPad or whatnot...! Fixing these errors can be\n");
	fprintf(stderr,"\ta time-consuming and very costly process!\n\n");
	fprintf(stderr,"Things to consider:\n");
	fprintf(stderr," - \tYou can have more than one i2c-bus, check in /proc/bus/i2c\n");
	fprintf(stderr,"\tand specify the correct one with -d\n");
	fprintf(stderr,"\tright now you have chosen to use '%s'\n",dn);
	fprintf(stderr," - \tA eeprom can occupy several i2c-addresses (one per page)\n");
	fprintf(stderr,"\tso please make sure that there is no vital eeprom in your computer\n");
	fprintf(stderr,"\tsitting at addresses between 0x%02x and 0x%02x\n",addr,addr+pages-1);

	fprintf(stderr,"Enter 'yes' to continue:");
	fflush(stderr);
	if(!fgets(warnbuf,sizeof(warnbuf),stdin)){
	    fprintf(stderr,"\nCould not read confirmation from stdin!\n");
	    exit(1);
	}
	if(strncmp(warnbuf,"yes",3)){
	    fprintf(stderr,"\n** ABORTING WRITE! **, you did not answer 'yes'\n");
	    exit(1);
	}
    }

    for(i=0;i<pages;i++){
	unsigned char buf[BYTES_PER_PAGE];

	if(rwmode){

	    if(f>=0){
		j=read(f,buf,sizeof(buf));
		if(j<0){
		    fprintf(stderr,"Cannot read from file '%s'\n",fn);
		    perror(fn);
		    exit(1);
		}
		if(j!=sizeof(buf)){
		    fprintf(stderr,"File '%s' is too small, padding eeprom with zeroes\n",fn);
		    while(j<sizeof(buf))
			buf[j++]=0;
		}
	    } else {
		for(j=0;j<sizeof(buf);j++)
		    buf[j]=0;
	    }
            for(j=0;j<(BYTES_PER_PAGE/MAX_BYTES);j++) {
		if(eeprom_write(d,addr+i,j*MAX_BYTES,buf+(j*MAX_BYTES),MAX_BYTES)<0)
		    exit(1);
                fprintf(stderr,".");
                for ( wait = 0; wait < 10; wait ++ ) {
                  acked = eeprom_write(d,addr+i,j*MAX_BYTES,NULL,0);
                  if ( acked == 0 )
                    break;
                  fprintf(stderr,".");
                  usleep( 100 );
                }
                if ( acked != 0 ) {
                  fprintf(stderr,"Ack of write operation timedout");
                  exit ( 1 );
                }
                fprintf(stderr," acked \n");
            }
	} else {
            for(j=0;j<(BYTES_PER_PAGE/MAX_BYTES);j++)
		if(eeprom_read(d,addr+i,j*MAX_BYTES,buf+(j*MAX_BYTES),MAX_BYTES)<0)
		    exit(1);
	}


	if(!rwmode && f>=0){
	    j=write(f,buf,sizeof(buf));
	    if(j!=sizeof(buf)){
		fprintf(stderr,"Cannot write to file '%s'\n",fn);
		perror(fn);
		exit(1);
	    }
	}

    }

    if(f>=0)
	close(f);

    close(d);

    exit(0);

}

2014年1月20日

T221/CDU2150A/E2210HDS/L465 でのマルチディスプレイ。

Filed under: 副業 — pinewell @ 9:38 AM

IBM T221/TOSHIBA CDU2150A/IIyama ProLite E2210HDS/EIZO FlexScan L465

札幌で買ったのだから、もう5年になるか?IBM T221にハマったのは。
3840×2400の広大なディスプレイでの開発作業は一度味わうともう元には戻れない。
T221をメインに、E2210HDSでブラウザ、L465でドキュメント確認とか。3画面を有意義に使用していた。
これはNvidiaのGeforce GTX650Tiで。
EDIDオーバーライドケーブルを使用しての3840×2400 34Hz DualLink-DVI。E2210HDSは1920×1080 HDMI。L465は1280×1024 D-subでのアナログ出力。

去年の暮れのことだったが、遅ればせながらTOSHIBA CDU2150Aの存在を知り値段も手ごろだったので購入。
T221が壊れた時の予備と思っていたのだが、自作の棚が測ったように収納にピッタリで設置が可能。
せっかくだから繋いでみようと思い立つ。
ハッキリ言って難儀した。しかも金もかかった。やれやれ。

目指すのは、下記。
先人の苦労によるとCDU2150Aはどう頑張っても3840×2400 34Hzが限界のようだ。
T221は3840×2400 48Hz。
E2210HDSは1920×1080 60Hz。
L465は1280×1024 60Hz。
いずれも32bitのフルカラー。

結果から書くとE2210HDSとL465は問題なし。
T221 は 3840×2400 34Hz。CDU2150Aは3840×2400 24Hzで妥協した。
構成と接続
Core i7 970
Radeon HD7790
DL-DVI— オーバーライドケーブル — T221 (3840x2400x34Hz)
HDMI — E2210HDS (1920x1080x60Hz)
DVI-I — L465 (1280x1024x60Hz)
Radeon HD7750
HDMI — 変換ケーブル SL-DVI —- CDU2150A (1920x2400x24Hz)
DP — 変換ケーブル HDMI-SLDVI- CDU2150A (1920x2400x24Hz)
OSはWindows8.1×64。10回くらい?インストールやバックアップからの復元をするハメになった。
DPからHDMIへの変換はHD7790で4画面はいけなかったのでアクティブではないのだろう。いつぞやに購入した安物。
HD7750のDVIに接続しなかったのは単にDVIの長目のケーブルが無かったから。
gamen

 

 

 

 

 

 

グラボはCDU~のためにはeyefinityを使わざるを得ず、NVIDIAからAMDに換装。久々のAMD(ATI)。
650Tiより上を目指すとHD7790。石は5画面までに対応しているので、これ1枚で足りるか?と思ったのだが。
実際届いてみるとD-DVI、S?-DVI-I、HDMI、DPの4つポート。最大4画面か。深く考えなかったな。
AMD2枚目をポチる。予算の都合でHD7750。こちらはD-DVI HDMI DPの3ポート。
元々動いていたWin8.1に上書きインストールをするが、結果Win8.1起動時にブラックアウト。
DHCPサーバーのログを見るとIPの取得もしていないのでグラフィックドライバーの読み込みでフリーズしているようだ。
この時点で使い慣れたWin8.1の環境を放棄することを決意せざるを得なかった。
デュアルBootでWin7x64もあったのだが、こちらも無限ようこそ病にかかり起動せず。
(あまり使ってはいなかったが)Win7環境も放棄することに。

サラの状態のSSDでRAID0を組み、Win8.1をインストール。
初期起動時は800×600なのだが、そのうちにWindowsがドライバーをどこかから探してくるのか?モニターを見つけた時点で?ブラックアウト。
原因は確かではないのだが、すかさずAMD Catalystを入れれば大丈夫のようだ。
モニターも最初は最低限のモニターをつなぐだけにしておく。ドライバーを入れた後に追加・検出したほうが良かった。
(電源の不足なのか一度勝手に再起動も、起動できず。再インストールなんてこともあったが。)

なにせWindows8.1にはセーフモード起動がない。
セーフモードで起動できるようにプロファイルを書き換えてもそこまで到達せずにフリーズしてしまう。
一度しくじるとバックアップから戻すか、再インストールをすることになる。

T221でのEDID6、2624×2400/1216×2400での48Hz化も試すがブラックアウトして起動できなくなった。
CDU2150Aでの1920x2400x34Hzx2はINFファイルのEDIDオーバーライドが面倒くさいので試すことすら辞めた。
オーバーライドケーブルを購入すれば簡単にはできそう。7,800円の出費は痛いが。

Powered by WordPress