
Ohjelmoija CH341A it-korjauksessa
Tiistai 19.1.2021
Päätin kunnostaa ja laittaa käyttökelpoiseen kuntoon Fantec MR-35DUS2 kiintolevykoteloni (kaksi risaa, yksi toimiva).
Fantec MR-35DUS2 sisältää kaksi kiintolevypaikkaa max. 2TB kiintolevyille. Sen verran vanhempaa tekniikka kyseessä, että SSD-levyjen kelpoisuudesta laitteeseen en osaa sanoa, mutta ainakin perinteiset kiintolevyt käyvät. Tiedonsiirto laitteeseen tapahtuu USB 2.0 kaapelin tai eSata kaapelin avulla. Laitteen käyttötavaksi on valittavissa joko RAID0, RAID1, JBOD tai BIG, näistä olen käyttänyt vain RAID1 ja JBOD käyttötapoja.

RAID1 tarkoittaa kiintolevyn peilausta, eli pidetään yllä kahta identtistä kiintolevyä. Käytännössä nämä kaksi kiintolevyä ovat laitteessa jatkuvasti, ja laite on ns. backup-käytössä aika ajoin. Toisen kiintolevyn hajotessa datat säilyvät. JBOD käyttötavassa kovalevyt näkyvät itsenäisinä aseminaan.
Kaksi tällaista kiintolevykoteloani hajosi itsestään ajan kanssa, käytännössä sanoivat ns. poks! käynnistyksen yhteydessä. Äänen syyksi paljastui laitteen virtalähteen 3.15A sulake joka hoiti tehtävänsä hajoten vikatilanteessa.
Vian perimmäinen syy on todennäköisesti virtalähteen piirilevyllä käytetty ruskea liima, joka ajan kanssa alkaa johtamaan sähköä. Ilmiöön olen törmännyt aiemmin LCD-näyttöjen virtalähteiden kanssa, netistä löytyy aiheesta vilkasta keskustelua mm. badcaps.net-sivustolla. Toisen kotelon hajotessa huomasin virtalähteen olevan aina päällä, ellei virtapistoketta ole fyysisesti irroitettu sähköverkosta. Kolmas laite todennäköisesti pysyikin ehjänä, koska irroitin sen sähköverkosta aina käytön jälkeen.
Toisen poksahtaneen laitteen virtalähteestä löytyi myös viallinen HFS7N60 Mosfet komponentti, joka yleismittarin vastusmittauksella näytti nollaa kaikilla pinneillään (oikosulku).

Myös ehjässä ja toimivassa oli edellämainittua liimaa, joten päätin korjata sen samalla. Suuri osa korjauksesta oli liiman raaputtamista ruuvimeisselin kärjellä, mutta jonkin verran komponenttejakin huollettiin ja vaihdettiin (häiriönpoistokondensaattori, sulake). Vaihdoin piirilevyihin Mosfetille uuden piitahnan, en toki siihen oikosulussa olevaan, johon uusi ehjä Mosfet on tilauksessa (Kiinasta).
Päätin samalla päivittää laitteiden Firmwaren uusimpaan mahdolliseen. Kahden laitteen kanssa toimenpide sujui ongelmitta, mutta kolmannen laitteen kohdalla se epäonnistui. Laite on siten nyt SER-jätettä, mutta tarkoitus on yrittää korjata se toimivaksi. Nopealla arvauksella vaihtamalla uusi Mosfet ja päivittämällä firmware, laite on kunnossa.
Laitteessa on pieni 2Mb Flash-ROM-piiri, M45PE20, jossa Firmware sijaitsee. Firmware päivitetään yleensä laitteen omaa ohjelmistoa tai ohjeissa mainittua erillistä päivitysohjelmaa käyttäen. Lisäksi firmwareja pystyy päivittämään flash-piirien ohjelmointilaitteen avulla. Kun tietokone ei kykene kommunikoimaan laitteen kanssa, kuten nyt, ohjelmointilaite (programmer) on ainoa mahdollisuus. Tilauksessa on markkinoiden edullisin Flash-programmer, jota halvimmillaan löytyy (eBay) vain muutamalla eurolla.

Koska posti Kiinasta on melko hidasta juuri nyt, ja kun tuote on halpa, päätin tilata yhden kappaleen saksalaiselta myyjältä ja toisen kappaleen Kiinasta. Kiinasta saapuvan tuotteen mukana tulee erilaisten flash-piirien adaptereita, jotka helpottavat programmerin käyttöä. Yhteensä noin 20 euron kustannuksesta kyse.
Pieni varoituksen sana, tässä halvassa ja suositussa CH341A mikropiiriin perustuvassa ohjelmoijassa jännite, jota flash-ROM-piirille syötetään, on internetistä löytyvän tiedon mukaan ainakin eräässä CH341A-mallissa 5V. Oikea jännitetaso on 3.3V. Asia on helposti tarkistettavissa mittaamalla USB-liitäntään kytketyn laitteen ko. jännite yleismittarilla.
Useimmille flash-piireille 5V jännite on liian suuri, tavanomaisesti sallitun jännitteen alue on välillä 2.5v-3.6v, maksimikesto ehkä noin 4 volttia. Flash-piirin suojelemiseksi jännitebugi täytyy korjata 3.3v jänniteregulaattorin avulla. Regulaattori voi löytyä valmiina laitteen piirilevyltäkin, mutta tarvittavat kytkennät puuttuvat.
Todettakoon että on olemassa myös alle 2V jännitteellä olevia flash-piirejä, jotka vaativat lisäadapterin ohjelmointiin. Piireistä kannattaa aina ladata datalehti (pdf-tiedosto) ja tutkia se tarkkaan. Ohjelmoijan piirikanta on yleensä standardipinniselle flash-piirille, mutta kaikki flash-piirit eivät ole standardin mukaisia, esimerkiksi aiemmin mainittu M45PE20.
Keskiviikko 20.1.2021
Postilaatikosta löytyi Saksasta tullut kirje jonka sisältä löytyi CH341A flash-piirien ohjelmointilaite. Viikossa perille, ei olisi nopeammin voinut tulla.


Torstai 21.1.2021
Seuraavat vaiheet ovat aika loogisia, joten kerrottakoon niistä vain kuvin.




Tämän jälkeen vuorossa oli flash-piirin ohjelmoinnin suorittavan tietokoneohjelman käynnistäminen. Kokeilin ensin piirin yhteydessä mainostettua ilmaista kiinalaisohjelmaa, mutta se ei tunnistanut korjattavassa laitteessa olevaa flash-piiriä. Piiriä ei itseasiassa löytynyt ohjelman tietokannasta, vaikka se joidenkin tietojen mukaan olisi pitänyt olla tuettujen joukossa.
Koitin tämän jälkeen toista ohjelmaa, AsProgrammer, jossa oli xml-muotoinen lista tuetuista piireistä. Lisäsin chiplist.xml listaan muutaman rivin, joista yksi edusti juuri kiintolevyboxin M45PE20-piiriä (2Mb) ja muut saman sarjan suurempia piirejä. Tiedot googletin netistä, paitsi piirille M45PE16 (16Mb), joka oli listassa valmiina. Kattava listaus piireistä löytyy SF100Linux (Linux software for SF100/SF600) projektista GitHubista.
<M45PE20 id="204012" page="256" size="262144" script="blockerase.pas"/>
<M45PE40 id="204013" page="256" size="524288" script="blockerase.pas"/>
<M45PE80 id="204014" page="256" size="1048576" script="blockerase.pas"/>
<M45PE16 id="204015" page="256" size="2097152" script="blockerase.pas"/>
Tämäkään ohjelma ei tunnistanut piiriä, sen pystyi lukemaan, mutta tulos oli pelkkää tyhjää eli käytännössä sitä ei luettu. Varmistusmoodi (verify) päällä kirjoittaminen ei onnistunut kuten normaalitilanteessa pitäisi tapahtua. Vaihdoin vielä Linuxiin ja koitin siellä flashrom-ohjelmaa – sekään ei löytänyt koko piiriä, koska ei tunnistanut sitä.
Lauantai 23.1.2021
Koska vaikutti että flash-piirissä on jokin vika, päädyin irrottamaan sen piirilevyltä kokonaan, ja juottamaan uudelle testipiirilevylle. Tarkoituksena oli varmistaa etteivät ongelmat johtuneet siitä että yritettiin ohjelmoida firmwarea suoraan sen ollessa kiinni korjattavan laitteen piirilevyllä.

Yllättävästi tämä toimenpide ratkaisi firmwaren ohjelmointi-ongelman, eli sain AsProgrammerilla tunnistettua piirin (read Id), tehtyä luennan (read), tyhjennyksen (erase) ja ohjelmoinnin (program). Ohjelmoinnin jälkeen luin piirin uudelleen, havaiten datan muuttuneen onnistuneesti.

Voidaan siis todeta että CH341A piiriin perustuva halpis-programmer hoitaa hyvin tehtävänsä, etenkin kun käyttää sitä AsProgrammer-ohjelmalla, joka mahdollistaa myös tuntemattomien piirien lisäämisen toisin kuin tuotteen yhteydessä useimmiten mainittu kiinalaisohjelma, ns. CH341A Mini Programmer Software. Kun on vielä 1-3 kpl ehjiä flash-piirejä varastossa, niin voi aina varmistua, että itse ohjelmointilaite on kunnossa.
Tein itse huomion, että ohjelman tietokannassa on virheitä. Kannattaa selvitellä asiaa jos ohjelma lukee piirin Id:n mutta ei tarjoa valintaluetteloa piirille. Piiriluetteloa (chiplist.xml) on helppoa muokata.
Tiistai 26.1.2021
Kasasin laitteen ns. testikokoonpanoon, jolla saan sen kiinni tietokoneen USB-liitäntään nähdäkseni tunnistaako tietokone sitä. Flash-piirin irroituksen yhteydessä piirilevyn pari hiuksenhienoa kytkentää oli hajonnut ja jouduin niitä paikkailemaan. Lisäksi päätin kiinnittää flash-piirin siten että sen saa helposti irti tarvittaessa, mikropiirin kanta, liittimiä, liimaa, kuten allaoleva kuva osoittaa. Ehkei niin kaunista, mutta mulle on pääasia että toimii ja korjaus on riittävän jämäkkä.

Ennen testaamista tyhjensin vielä varmuudeksi flash-piirin ja ohjelmoin siihen uusimman firmwaren.
Kytkin laitteeseen sähköt erillisellä molex-liitäntäisellä virtalähteellä ja käynnistin sen kytkimestään. Sitten USB-johdolla kiinni tietokoneeseen, ja ihmeiden ihme, tietokone havaitsi laitteen. Myös kiintolevykotelon Steelvine-softakin havaitsi sen.
Laite vaikuttaisi siis olevan nyt kunnossa, paitsi että sen oma virtalähde odottaa vielä uutta Mosfet-komponenttia. Kunhan se jossain vaiheessa saapuu niin suoritan korjaamisen loppuun.
Mikäli korjaus ei olisi onnistunut, kotelon olisi voinut ehkä muokata käyttämään noin 5 euron hintaisia USB3-SATA adaptereita. Etuna on että näin saisi tuen kiintolevyille aina 10 Tb kokoon saakka.

Tämän USB3-SATA adapterin toiminta on selvittelyn alla, ensikokeilulla Linux vaikuttaisi tunnistavan kiintolevyn mutta Windows (Win7) ei. Linux ja Windows on eri tietokoneissa ja pientä eroa on myös USB3:ssa.