Thinkpad X230 mint asztali gép, mi van a bővítőkártyákkal?

írta: fatpingvin, 2 éve

Naszóval, az úgy volt hogy... egy régi kedves cimborám közvetítésével még jómúltkor vettem egy x230-as Thinkpadet, dokkal-vonóval. Hogy miért adtam ki pénzt egy lassan 10 éves notebookra, ami ráadásul minden lényegesnak tűnő paraméterét tekintve ósdibb mint a korábbi Acerem ami végigkísért az egyetemi tanulmányaim alatt, nos szerintem aki ismer fel se teszi ezt a kérdést, a többieknek írom hogy az ördög a részletekben rejlik.

Szerelhetőség, bővíthetőség, kompakt méret, strapabírás, illetve a hatalmas modding potenciál, megfejelve igencsak vaskos közösségi támogatással (erről rövidesen).

Egy szó mint száz, lett nekem egy ilyen laptopom. Gondolom mondanom sem kell, amint kifizettem első dolgom volt kibontani mint hülyegyerek a karácsonyi ajándékát (ehhez egyedül egy csillagcsavarhúzó kell!) és nekiálltam átszabni az igényeimre. a gyári 480G-s mSATA SSD kijött belőle, a régi-de-újabb laptopom 2.5-ös SSD-je bele, rendszer folytat onnan ahol abbahagytam, szuper. Következő lépés volt Tim82 fórumtárstól kölcsönkérni egy SPI flashert, Internet feltúr, az Embedded Controller firmware-ét lecseréltem egy nem gyári hibásra (az eredeti csak gyári akkupakkokat hajlandó tölteni...) alaplapi firmware készlet ugyancsak csere, a gyári Insydeh2o helyett a nyílt forráskódú SeaBIOS (a videoprocesszor vBIOS-a is cserélve lett SeaVGABIOS-ra, hasonló megfontolásból), az UEFI-t coreboot váltotta a Skulls csomagolásában, az Intel Management Engine pedig a me_cleaner áldozata lett (nem kár érte). A know-how itt van, hadd ne írjam le még egyszer (bár a CH341A flasher átalakítása, hogy normálisan tudjon 3.3V-os üzemet is, az is megérhet egy posztot, csak ugye ez később történt és nincs róla képanyagom). Az Ethernet vezérlő firmware-e maradt, azzal nem tudok mit kezdeni de hát valahol kompromisszumokat is kell kötni :)

Itt szeretném megragadni az alkalmat és megköszönni a felhasznált szoftverek és toolkitek elhivatott hackereinek és fejlesztőinek, hogy lehetővé tették ennek a remek kis vasnak a megbízható, normális firmware-készlettel való használatát, illetve a szabad szoftveres közösségnek, hogy megteremtették azt a közeget, ahol egy ilyen törekvés életképes és virágozhat.

Ezzel lehetőségem nyílt a gyári intel wifi kártyát (Centrino 6300 vagy mi a fene) cserélni egy Qualcomm Atheros QCA9565-ösre, ez bár régebbi és nem tud 5GHz-en óbégatni és fülelni, viszont van hozzá egy teljesen blob-free mainline driver (ath9k) ami figyelembe véve hogy mikor és mire használok wifit, az én igényeimnek a harmadolt sebesség mellett is egy teljesen élhető megoldás. UPDATE: ezt azóta cseréltem egy Qualcomm Atheros QCA9462-re, ami már tud 5GHz-et is és 300Mbps tempót, az előnye pedig ugyanúgy a teljesen open ath9k driver. Hozzá kell tenni ez a kártya nem működött volna a gyári BIOS-sal, ez ismert tervezési és implementációs hiba (a gyári BIOS csak 3-4 lenovo brand wifi kártyával működik, a többivel valami értelmezhetetlen "unauthorized device" errort dob)

Időközben a rezsicsökkentés szellemében igen komoly lett a nyomás hogy visszavegyek a villanyfogyasztásomból, így nem csak a szervernek kellett mennie hanem az asztali gépnek is... lényeg a lényeg most a dokkoló segítségével csak egy gépem van, ami betölti az asztali és a notebook szerepkört is.
Igen ám, de az én asztali gépem finoman szólva nem egy egyszerű darab, példának okáért a háttértárak SAS merevlemezek illetve van egy FireWire buszrendszerem is háttértárakból, bár az oldschool SCSI eszközeimet átmenetileg el tudom felejteni. Talán kezd világossá válni hogy mi itt a probléma... ez a szerencsétlen laptop semmi ilyen interfésszel nem rendelkezik. FireWire a vele egykorúakon előfordul, ezen pont nincs, SCSI-hez úgy legalább 10 évvel korábbra kéne visszanyúlni, SAS meg ugye laptopban, jó vicc.

Megfontolandó megoldás a proprietary bluetooth modul helyére (ez amúgy is kikerült belőle, az Atherosnak van sajátja amihez van rendes driver is...) lehetne patkolni egy USB breakout panelt és oda egy wifi sticket, így felszabadulna egy mPCIe slot... és akkor itt álljunk is meg.

Miért tennék ilyet, ha ezen a laptopon van egy ExpressCard slot? Nem csak hogy ki van oda drótozva egy PCIe sáv, még hot-plug képes is dizájn szerint! Oké, a szoftver teljes mértéken képes kezelni a PCIe hotplug eventet, ez konzumer vason sokkal inkább a hardveren szokott elvérezni (tudom, próbáltam... ) szóval ha ugyanezt a manővert a Zember egy mPCIe slottal játssza el, az esélyesen nem lesz túl megbízható.

Szóval EC-PCIe adapter, az egyszerűség kedvéért... amit Tim82 fórumtárs kölcsönadott nekem tesztelésre (ezért is ismét csak köszönet!) az egy nagyszerű darab, mindent tud amit nekem kell, három komoly probléma volt csak vele: 0: nem az enyém, vissza kellett adnom, ez így van rendjén. 1: jelen idő szerint már beszerezhetetlen. 2: ha beszerezhető is lenne, olyan batár nagy hogy elfoglalná a fél asztalomat. Alternatívák, amiket ebayről tudnék rendelni, postával és vámmal együtt a legolcsók is alulról közelítik a laptopom beszerzési árának felét, így ezt inkább félretettem esőtervnek.

A laptop alaplapját nem szándékoztam moddolni, ha megsütöm az drága mulatság lenne, viszont beugrott hogy nekem a fiók mélyén lapul egy EC-s smartcard readerem. A sztori innen kezd érdekessé válni, utt beszéljenek a képek helyettem:

róla van szó, mint kiindulási pont, mókás véletlen hogy ez is Lenovo branded...

ugyanez a belbecs feltárása után:

Nyissz. Igazából vághattam volna fűrész helyett ollóval is, olyan vékony a panel hogy nem esett volna benne kár. Lényeg a lényeg, nekem most csak az ExpressCard csatlakozó kell, de azért az elektronikát is eltettem, feliratozva hogy a panelról lefutó nyomvonalakat miben kell végeztetni.

A kép szerintem önmagában elmeséli az ötletemet... aki nem ismeri fel, az a sárga izé egy GPU riser egy leszerelt bányából.

Pikk-pakk kész is van a beforrasztás. Na meg a lószerszámot, azt. Először is ki kellett mérni, hogy a félbevágott USB 3.0 kábel melyik ere melyik PCIe pinhez tartozik a riserben, majd ezeket megfeleltetni az EC csatlakozó lábkiosztásának, beforrasztani úgy hogy ne csinálj rövidzárat, etc... (működő PCIe linket emlékeim szerint létre lehet hozni 7 darab érből, egy differenciál pár az órajelnek, egy-egy differenciál pár a Tx és Rx csatornáknek meg egy közös test, ezen kívül még ugye van egy-két control pin meg egyebek de azok szigorúan véve nem feltétlenül kellenek)

Itt szeretném megjegyezni, ez a képen még nem látszik, de az EC kártya egy-egy control pin földre zárásával jelzi a host felé hogy miféle hardvereszköz van rajta, USB vagy PCIe, esetleg mindkettő... az én kártyám eredetileg USB volt, így ezt a lábat fel kellett emelni, a PCIe control pint pedig testre zárni. Maszatolás az ónkrumplikkal...

Több kép nem készült, helyette álljon itt tanúmnak ez a PCIe eszközfa (az igazsághoz hozzátartozik hogy itt beiktattam pár nap szünetet, majd elég sok tesztelést...), az utolsó sort kell nézni. Láttál már olyan x230-as Thinkpadet, amiben egy HD4670-es Radeon GPU dolgozik? :DDD

00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
00:04.0 Signal processing controller: Intel Corporation 3rd Gen Core Processor Thermal Subsystem (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation QM77 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
00:1f.6 Signal processing controller: Intel Corporation 7 Series/C210 Series Chipset Family Thermal Management Controller (rev 04)
01:00.0 SD Host controller: Ricoh Co Ltd PCIe SDXC/MMC Host Controller (rev 07)
02:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV730 XT [Radeon HD 4670]

Hozzá kell tenni, ez még a tökéletestől messze van. A mining riser a limitált számú ér okán nem visz át pár pint, úgy is mint a SMBus két pinjét (így a host rendszer nem tudja kiolvasni a kártya BIOS-át ha van neki ilyenje) valamint hiányoznak a különböző power control szignálok is. Van kártya ami ettől még vígan működik, ilyenek például a Realtek gigabit Ethernet vezérlői, azok azonnal plug and play módon mennek ebben a konstrukcióban, de például a Radeon 520 OEM videokártyámat egyáltalán nem tudtam életre kelteni benne, pedig tudom hogy működik x1 PCIe slotban. Amin őszintén meglepődtem, az az volt hogy a jó öreg Asmedia PCIe splitterem is hibátlanul működött, hotpluggal együtt. Még az egyik downstream lábára kötött, PLX chip mögé rejtett Adaptec SCSI vezérlő is bejelentkezett mint PCIe végpont, bár a dmesg elég beszédesen adta tudtomra hogy alapvetően se a kártya, se a kernel nem képes maradéktalanul kiszolgálni azon igényemet, hogy ez a konstrukció full-feature működjön.

Van még mit finomítani ezen, de a koncepció már látom hogy működőképes. A következő felvonás egy teljesértékű x1 PCIe slot kidrótozása lesz, ehhez most igyekszem alkatrészeket szerezni. A cél nyilván nem egy, a laptopnál vénebb videokártya rádrótozása, hanem elsősorban a SAS merevlemezeim elérhetővé tétele, de ez egyelőre a jövő zenéje.

Mert még így is olcsóbb, mint készen megvenni. Főleg, hogy az így szerzett tudás és tapasztalat pénzben nem kifejezhető értéket képvisel.

folyt. köv?
folyt. köv :D

Képek az újabb verzióról. a koncepciót nem írom le még egyszer, teljesen ugyanaz mint az előző, pár fontos extrával. Az USB3-as riser helyét átvette egy fixre kötött szalagkábeles riser. a szalagkábelt (legalábbis a három fontos differenciál érpárt) lecseréltem egy kontakthibás HDMI kábelből bontott árnyékolt, sodrott érpárra, illetve ami a unkcionalitás szempontjából igen fontos, mivel már nem csak 8 érre vagyok korlátozva, ezért be tudtam kötni a clock request pineket illetve a két SMBus pint (CLK és DATA), így azok a kártyák is használhatóvá váltak, amelyeknek a megfelelő működéséhez a host rendszernek ki kell olvasni a rajtuk lévő konfigurációs infókat, tipikusan ilyen AIC például egy SAS HBA illetve a Radeon 520 OEM vidikarim. Láttál már olyan laptopot, ami 3 SAS merevlemezt pörget? :D ha még nem, most mutatom:

Nem csak hogy pörgeti, de látja is annak rendje és módja szerint, a rajtuk lévő RAID tömböt minden további nélkül fel tudtam csatolni és írni-olvasni. Nyilván a x1 PCIe sáv bottleneck lehet, de jelen esetben a lényeg az volt hogy hozzáférjek a lemezeken árolt adataimhoz.

Zárásul pedig legyen itt a gémerek kedvence táma, a videokártya, szóval tessék, a CUDA abakuszom, a lspci -tv eszközfában (nem) látszik hogy ott van mint videoprocesszor meg hangkártya: