12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324 |
- BFGMiner Version 5.4.2 - March 26, 2016
- - Update official Win32/64 build compiler and libraries:
- - - Win64 compiler (GCC) from 4.7.4 to 5.3.0 (Win32 remains at 4.7.4)
- - - libcurl from 7.39.0 to 7.47.1
- - - libevent from 2.0.21 to 2.1.5-r4
- - - libusb from 1.0.18 (Win32) and 1.0.19 (Win64) to 1.0.20
- - - libmicrohttpd from 0.9.38_pre33603 to 0.9.48
- - Update libblkmaker to 0.5.3
- - Bugfix: Sanitise lock situation for work2d
- - Bugfix: SSM: Never issue the same work2d twice in a row
- - Bugfix: SSM: Never send mining.notify for stale work2d
- - SSM: Refactor work2d check and job pruning from _stratumsrv_update_notify
- into stratumsrv_update_notify_str
- - Updates for OpenWrt 15.05
- - Bugfix: Correct work2d handling for GBT servers
- BFGMiner Version 5.4.1 - November 21, 2015
- - bitmain: Use more portable PRIu64 rather than %llu (which fails on Windows)
- - icarus: Use more portable PRIu64 rather than %llu (which fails on Windows)
- - Bugfix: openwrt: Fix bitmain option
- - Bugfix: antminer: Avoid strstr(NULL, ...) when device has no [available]
- product string
- - Update libblkmaker to 0.5.2
- - openwrt: Add option to enable bitmain driver
- - openwrt: Update libusb device list
- BFGMiner Version 5.4.0 - October 23, 2015
- - AUTHORS: Move jstefanop to current maintainers
- - Disable alchemist by default, add Travis build, and document configure option
- in README
- - alchemist: New scrypt ASIC driver
- - hashfast: Support setting clock speed from TUI Manage
- - avalon: Support setting clock speed from TUI Manage
- - antminer: Support setting clock speed from TUI Manage (hidden for non-BM1382/4
- devices)
- - jingtian: Allow changing clock speed from TUI
- - Debuglog for retrodiff being disabled
- - Disable retrodiff when it was not explicitly enabled, and the pool doesn't
- seem to like it
- - Bugfix: Only adjust work_difficulty on retrodiff submissions, so we can still
- detect them on rejection
- - (Re-)enable retrodiff by default for stratum pools, since some servers
- implement mining.set_difficulty wrong in this way
- - New pool option "retrodiff"
- - If a share passes difficulty check for the updated pool target, record that
- target for correct accounting of diff_stale.
- - DevAPI: Remove unused temporary variable from driver iteration
- - README.ASIC: Expand Antminer S5 section to S1-S5 for completeness, since in
- theory they should work
- - bitmain: Make reg_data optional for S4 and S5, calculating it from clock
- - Document Bitmain Antminer S5 support
- - bitmain: Remove poll_prio_threshold and just ensure we poll at a regular
- interval to avoid nonce buffer overruns
- - bitmain: Remove dead per-device constants
- - bitmain: Only have one set of actual maximums
- - bitmain: Migrate BITMAIN_MAX_NONCE_NUM to runtime packet_max_nonce
- - bitmain: Migrate BITMAIN_MAX_WORK_QUEUE_NUM/bitmain_work_poll_prio to runtime
- poll_prio_threshold
- - bitmain: Migrate BITMAIN_MAX_WORK_NUM to runtime packet_max_work
- - bitmain: Dummy model parameter
- - bitmain: Remove baud/flush, as the fake VCOM kernel driver ignores (and
- complains about) both
- - bitmain: Poll after queuing work, once enough is queued
- - bitmain: Sleep a little between polling
- - bitmain: Flush queues for work restarts
- - bitmain: Queue multiple works at a time
- - bitmain: Remove more dead code
- - bitmain: Prune old work eventually
- - Bugfix: bitmain: Properly count work-search failures as HW errors
- - bitmain: Refactor to work with minerloop_queue (leaks work memory)
- - bitmain: Avoid busy-looping on network devices
- - bitmain: Support for talking to a device over the network
- - bitmain: Use the hottest reading for device temperature
- - Bugfix: bitmain: Actually use baud setting
- - bitmain: Remove more dead code
- - bitmain: Handle stale results normally
- - bitmain: Simplify num2bit
- - bitmain: Initial set-device based configuration
- - bitmain: Use lowl-vcom abstractions
- - Update copyrights
- - Bugfix: bitmain: Type-safe printf-format usage
- - Travis: Test bitmain-only build
- - Build bitmain driver
- - bitmain: Hardcode configuration for now
- - bitmain: Rework nonce_diff handling
- - bitmain: Update headers
- - bitmain: Deal with unused variable warnings sanely
- - bitmain: Explicitly de-const device_path for freeing
- - Bugfix: bitmain: Correct type of cgpu->temp reference
- - Bugfix: bitmain: Use uint8_t consistently for binary data
- - Bugfix: bitmain: Clear opt_bitmain_dev string properly
- - bitmain: Remove non-existent bitmain_detect parameter
- - bitmain: Cleanup unnecessary code
- - bitmain: Use uthash to find queued work
- - bitmain: Implement inc_dev_status within record_temp_fan
- - bitmain: Remove non-applicable limits
- - bitmain: Remove obsolete get_statline_before function
- - bitmain: Move g_miner_version to bitmain_info struct
- - bitmain: Remove direct USB code
- - bitmain: Update driver registration
- - bitmain: Update symbol names
- - bitmain: Remove dead code
- - bitmain: Replace custom hexdump with normal bin2hex
- - bitmain: Get network difficulty from first work task
- - bitmain: No-op htole8
- - bitmain: Simulate cgminer work_block somewhat
- - bitmain: Update bin2hex usage for malloc-free version
- - bitmain: Copy low-level code from Bitmain cgminer usbutils
- - Copy working driver-bitmain.c from Bitmain's cgminer at commit
- 4ecf89341657ea7efecdf588586ca3f068ab17ab
- - Add api_add_percent to miner.h
- - Bugfix: DevAPI: Update includes from uthash to utlist and support older
- versions of uthash
- - Bugfix: RPC: Need to include utlist.h for config file list
- - Bugfix: antminer: Avoid NULL dereference for non-BM1382/4 devices
- - README.ASIC: Update documentation for BM1382/4 clock calculation support
- - antminer: Support for setting BM1382/4 clock by frequency MHz
- - Bugfix: Keep JSON from getaccountaddress around long enough for debug messages
- - Bugfix: Run gen-version.sh from source directory
- - Fix to enable building into directory out of source tree
- - Bugfix: Clean up JSON from getaccountaddress
- - Bugfix: Do not use hash tables for driver lists, since they require unique
- keys
- - Pool option #cksuggest to use CKPool-compatible mining.suggest_difficulty
- - RPC: Add "Rotate Period" to config
- - RPC: Extend setconfig to change strategy
- - Allow setting strategy by name
- - bitforce: Enable changing voltage from the Manage TUI
- - avalonmm: Use proc_set_device_tui_wrapper instead of avalonmm_tui_wrapper
- - DevAPI: Add generic proc_set_device_tui_wrapper
- - bitforce: Add "voltage" setting to send V?X commands
- - Bugfix: compac: Set dname so assignments match
- - README.RPC: Add missing setconfig|stratum-port documentation
- - README.RPC: Add missing setconfig|http-port documentation
- - Bugfix: lowl-vcom: Check for tcgetattr/tcsetattr/tcflush failure
- - configure: List compac driver in output
- - Travis: Workaround Travis bug
- - configure: Use AC_PROG_SED to find sed
- BFGMiner Version 5.3.0 - September 5, 2015
- - README.ASIC: Compac docs
- - antminer: Explicit support for GekkoScience's Compac BM1384 Bitcoin Miner
- - icarus: Use all null padding when probing work division (BM1384 reacts
- strangely - using part as start nonce?)
- - antminer: Match Product strings including "Antminer"
- - Bugfix: icarus: Never set timeout to 0, since it disables the timeout
- altogether
- BFGMiner Version 5.2.0 - June 5, 2015
- - Upgraded Windows hidapi library from 0.8.0_pre20130121 to 0.8.0_rc1_p20140719
- - Update bundled libbase58 to 0.1.4
- - README.ASIC: Document usage with AntMiner U3
- - icarus: Include ns/hash estimates for each nonce result, in debug logging
- - icarus: Cleanup dev vs proc repr in logging
- - Bugfix: update_block_display: Ensure we have console lock, and avoid rare
- relock when resizing windows inside curses_print_status
- - gitmodules: Change libblkmaker URI to use GitHub since Gitorious is defunct
- - Bugfix: DevAPI: Avoid infinite hang in set_device help
- - bitforce: Wait until pre-initialisation jobs all flush completely before
- starting to avoid sanity check issues
- - bitforce: Wait to clear job queue (at init) until we have actually opened the
- device
- - bitforce: Remove unnecessary delay
- - Bugfix: vcom: Avoid overflowing cc_t before division to deciseconds
- - Bugfix: bitforce: Ensure hashes_done is called for every completed job
- - antminer: Adapt default configuration to work with U3 as well as U1/U2
- - antminer: Add U3 voltage setting (x??? format only for now)
- - antminer: getstatus needs to read a result for every chip, but we don't use
- the output anyway, so just skip it
- - icarus: Modify work division detection packet to be compatible with Antminer
- U3
- - icarus: Replace decisecond-precision read_count with read_timeout_ms
- (millisecond precision) to handle faster devices like the Antminer U3 that
- complete works in under 1ds
- - lowl-vcom: vcom_set_timeout_ms function (increases precision to ms on Windows
- only)
- - util: timer_remaining_us function
- - configure: Improve path finding macro to work with more possible CPP output
- - configure: Macroify header path search
- - Reduce HTTP request failure log level to DEBUG since it often occurs probing
- stratum pools
- - Bugfix: DevAPI: Guarantee set_device functions never get passed a NULL pointer
- for newvalue
- - Always update block display after pool display in case of username wrapping
- around
- - icarus: Pass device representation to icarus_{gets,write} so logging can use
- it rather than fd numbers
- - Bugfix: icarus: Check for impossibly fast hw errors (and don't report Eh/s
- when they occur)
- - Bugfix: icarus: Avoid a race with watchdog applying settings by setting
- device_data before add_cgpu
- - RPC: Clean up api_add_* somewhat
- - Bugfix: util: Fix is_power_of_two
- - Port antminer driver to use set_device_funcs
- BFGMiner Version 5.1.0 - February 19, 2015
- - Fix broken driver options in configure script
- - Bugfix: extract_domain: Correctly handle query/fragment in URI without path
- - kncasic: Do flush!
- - kncasic: avoid duplicate nonces to be reported
- - kncasic: Fix logging levels
- - kncasic: Neptune-compatible API interface for enabling/disabling dies
- - kncasic: Use one bfgminer processor per die (not per core)
- - Update libblkmaker to 0.5.1
- - Titan: Lower log level when reconfiguring dies
- - Titan: does not need SHA256d algo
- - Titan: lower log level for flush messages
- - Titan: adjust log levels in knc_titan_get_info
- - get_master_rolling_hashrate -> get_proc_rolling_hashrate
- - Update webconfig code to latest BFGMiner
- - allow url based config files
- - kncasic: Fix "double free" error
- - kncasic: We need to free queued work to avoid memory leaks
- - Bugfix: minion: Don't try to add 0-chip devices
- - configure: Avoid BASHisms for better portability
- BFGMiner Version 5.0.0 - November 29, 2014
- - opencl: Fail gracefully if clGetProgramInfo/CL_PROGRAM_NUM_DEVICES returns
- zero
- - opencl: Remember results of global offset testing
- - opencl: Only save kernel binary when we built from source
- - opencl: Only try to patch BFI_INT when compiling a kernel from source
- - opencl: Major refactor, splitting up opencl_load_kernel into many new
- functions
- - titan: Initialise variables to satisfy compilers
- - Bugfix: opencl: Correctly handle non-goffset kernels
- - Fixing column spacing of non-curses device output
- - Bugfix: opencl: free memory if clState creation fails
- - Titan: Do not do actual configuration job in API thread context. Instead, send
- commands to the worker thread to do the actual job.
- - Titan: bugfix: dies are not configured if die#0 is OFF
- - Titan: unused function argument
- - Titan: unused variables
- - Update knc-asic: Titan FPGA image with spi->i2c commands removed and fixed
- some lock-up scenarios
- - Titan code rework: Use one bfgminer processor per die (instead of core)
- - minion: Reinitialise chips if they don't seem to be progressing
- - minion: Read temperature sensor
- - minion: TUI clock speed control
- - minion: Include "Frequency" in RPC status
- - minion: Add "clock" setting
- - minion: Set configuration parameters we care about
- - minion: Reset chip at initialization
- - minion: Configure PLL to 900 MHz at startup
- - minion: Report hashes done as accurately as we can
- - minion: Core enable/disable control
- - minion: Implement queue flushing
- - minion: Implement basic mining
- - lowl-spi: linux_spi_txrx2 to include device protocol dumping
- - minion: Detection code for the Prospero X1
- - Actually add version.c file
- - Only rebuild a minimal version.c file when git commit changes
- - Bugfix: Use HASH_ADD_KEYPTR for const char *, not HASH_ADD_STR
- - Bugfix: Re-lock stgd_lock when we don't have a malgo-specific pool to use
- - scrypt: Disable OpenCL by default
- - opencl: Remove support for "OCL1" kernel define (indicated OpenCL 1.1+)
- - opencl: Autodetect whether global offset actually works
- - opencl: Add no-goffset support to scrypt kernels
- - opencl: Determine kernel support for goffset by code analysis
- - opencl: Add "goffset" setting to override detection of support for global work
- offsets
- - util: seek_data_cb: Check validity of offset
- - Allow libcurl to rewind the upload buffer
- - cpu: Set the priority of miner threads to idle on Windows
- - cpu: Use _SC_NPROCESSORS_CONF instead of _SC_NPROCESSORS_ONLN
- - cpu: Do not set thread affinity on single-processor systems
- - Adding additional boolean keywords enable and disable
- - AUTHORS: Move Pelle and Vitalii to "Current Maintainers" since they actively
- maintain the Titan driver
- - AUTHORS: Add Ronny Van Keer (Keccak C implementation)
- - Titan: supply its own rolling hashrate implementation
- - A driver can supply its own rolling hashrate function (in case generic
- rolling hashrate implementation does not work)
- - Bugfix: configure: kncasic does not actually need i2c-tools
- - Keccak: Simplify keccak_hash_data
- - keccak: Adapt opencl intensity interpretation to have approximately the same
- desktop interactivity affect as SHA256d
- - Keccak: Include support in various builds
- - Travis: Update with Keccak
- - opencl/keccak: Add non-goffset support
- - opencl/keccak: Unroll all the hash rounds properly
- - opencl: Add Keccak support via "fullheader" kernel interface
- - keccak: Adapt for BFGMiner
- - Keccak: Import algorithm code as-is
- - opencl: Add a simple "fullheader" kernel interface
- - Update stratum mining.capabilities method to use a single Object for all
- parameters
- - Bugfix: Correct USE_SHA256D macro name to ensure SHA256d is always preferred
- as default algorithm
- - cpu: Generic scanhash that can support any PoW algorithm
- - RPC: Include Hash Method in minecoin for new algorithms
- - opencl: Teach findnonce to behave based on kernel interface rather than mining
- algorithm
- - opencl: Get min_nonce_diff from struct mining_algorithm
- - Move malgo-specific code to dedicated source files
- - opencl: Simplify kernel-specific data handling
- - Update knc-asic: Fix issue with detect_die crashing due to errors in response
- - titan: Init last_nonce on die reconfiguration to avoid lots of "unknown work"
- messages
- - Bugfix: titan: Extra garbage was sent on SPI with new commands
- - titan: Remove temporary log messages for manual report checks
- - titan: Wrong variable used in new per-die iteration
- - titan: Do manual core checks in parallel with normal ones
- - titan: Fix: Only one die was checked after flush in last commit
- - titan: Manually check all cores for reports after flush
- - opencl: Remove redundant checks for USE_OPENCL
- - cpu: Remove redundant checks for USE_CPUMINING
- - opencl: Only attempt to BFI_INT patch SHA256d kernels
- - Significantly rewrite configure script to handle driver dependencies cleaner
- - Make SHA256d mining optional
- - Bugfix: cointerra: Can handle nonces down to pdiff 1
- - kncasic: Initialise first_cgpu to silence false warning
- - Bugfix: Clarify goffset decision code, and refuse to compile kernels in
- situations where they won't work
- - Bugfix: opencl: Output buffer must be readable by kernel since it is used with
- a count/position iterator
- - Bugfix: opencl: Skip NULL kernel interface entry
- - DevAPI: hashes_done: Simplify and improve precision of max_nonce calculation
- - opencl: Avoid duplicating kernel_interfaces mapping in select_kernel
- - opencl: Avoid duplicating kernel_interfaces mapping in
- opencl_scanhash_get_kernel
- - cpu: Drivers should not be doing fulltest on their own, so remove it
- - cpu: Pass full work struct to scanhash functions
- - kncasic: Split up each ASIC channel to its own device
- - kncasic: Use consistent naming for KNC_MAX_DIES_PER_CORE
- - kncasic: Refactoring: coreid is not used, remove it
- - kncasic: Refactoring: put all device architecture defines in one place (knc-asic.h)
- - kncasic: Add lock to protect concurrent accesses to knc_state
- - kncasic: Fix auto
- - Build system fixes for kncasic driver
- - configure: Deduplicate Linux i2c-dev.h checks for KnCMiner drivers
- - Travis: Update for kncasic driver
- - kncasic: Only show the relevant die for RPC stats
- - kncasic: Use proc_repr for logging
- - kncasic: Split up logical processors
- - kncasic: Silence warning about unhandled enumeration values
- - Bugfix: kncasic: Proper format specifications
- - kncasic: Remove unused code
- - kncasic: Minimal changes to get it compiling
- - kncasic: Import gen 2 driver from cgminer commit
- bc153552be8591250cb3214bf5202501d4a39922
- - titan: Move thread_reportin() call to poll function
- - titan: reportin every process_report to avoid falsely tripping the watchdog
- - titan: Remove unused variables
- - Bump knc-asic submodule
- - titan: Increase FPGA to ASIC SPI frequency to 6 MHz
- - titan: Use new get_work_status prototype and print FPGA CRC error counters to
- log
- - Titan flush optimization fix: Don't send get_info commands when FPGA is
- speaking to ASIC
- - titan: All dies use same nonce working range
- - Titan flush optimization bugfix: FPGA status was checked once per poll instead
- of once per ASIC
- - Titan flush optimization: Bugfix: Flush time measurement only worked with one
- ASIC
- - Titan flush optimization: Point knc-asic submodule to include new FPGA image
- - Titan flush optimization: Remove temporary debug messages
- - Titan flush optimization: Keep works in local queue until slot number is
- reused
- - Titan flush optimization: Point knc-asic submodule to needed revision
- - Titan flush optimization: Measure new flush time
- - Titan flush optimization: Send works to all dies after flush
- - Titan flush optimization: First rough implementation
- - Titan: Less clobber on the screen: group some "failure" messages
- - Bugfix: Prefer not using work created just to ensure a specific algorithm is
- queued, so strategies work as much as possible
- - Stratum: Enable mining.set_goal to change parameters on the current goal
- - cpu: Fail gracefully if unsupported mining algo gets into scanhash
- - opencl: Fail gracefully if unsupported mining algo gets into
- opencl_scanhash_get_kernel
- - SSM: Send goal malgo to goal-enabled clients
- - Allow pools with #change_goal_malgo attribute to change the mining algorithm
- used by their assigned goal
- - Gracefully fail when no pool can be found to generate specific-algo work
- - Remove opt_scrypt
- - dualminer: Replace opt_scrypt with a per-device "scrypt" option
- - dualminer: Make dual_mode a per-device option as it should be
- - opencl: Nearly complete migration to per-work mining algorithms
- - pool_actively_desired: If we are the highest priority, workable pool for a
- given algorithm, we are needed
- - Ignore opt_queue for unused mining algorithms
- - Set name and aliases on mining algorithms
- - When hotplug is enabled and a mining algorithm is configured for the first
- time, schedule a rescan of hardware to pick up anything now applicable that may
- not have been before
- - Try to keep enough work queued for each mining algorithm in use
- - Move select_loadbalance and select_failover logic into their own functions
- - Keep track of how much work is staged per-algorithm
- - Keep track of how many goals reference each mining algorithm
- - Abstract goal_set_malgo function
- - Build a mining_algorithms list
- - get_work: Restore previous getwork rollntime behaviour
- - get_work: Only return work items compatible with processor (degrades getwork
- rollntime support)
- - opencl: Support for per-work mining algorithms
- - Build without POW_SCRYPT at all
- - opencl: Defer loading kernel until it is needed
- - opencl: Split initCl into opencl_create_clState and opencl_load_kernel
- - SSM: Implement mining.capabilities including proxying mining.set_goal
- - Replace mining.goal.subscribe with mining.capabilities
- - Stratum: Avoid resetting the goal if the old and new name match
- - Allow specifying goal options as eg, --pool-goal name:malgo=scrypt
- - cpu: Support for per-work mining algorithms
- - Replace cgpu.min_nonce_diff with drv.drv_min_nonce_diff(cgpu, malgo)
- - proxy: Avoid assumptions about mining algorithm at initialisation
- - Core only: Partially move most of opt_scrypt to mining_goal
- - opencl: Reintroduce independent intensity setting internally
- - Move MAX_*_INTENSITY stuff to driver-opencl.h
- - proxy: Minimise minimum difficulty for proxy clients
- - Enable --generate-to option (was --coinbase-addr) to work with non-default
- goals
- - Save pool goals in written config files
- - README: Update documentation for multiple blockchain support
- - RPC: Add "Difficulty Accepted" to "coin" command
- - RPC: Add "Mining Goal" to "pools" command
- - RPC: Accept an additional argument for "addpool" to indicate mining goal by
- name
- - Stratum: Support for mining.set_goal("goal name") - currently just resetting
- the user-configured goal
- - Teach longpoll logic about multiple mining goals
- - RPC: Include non-default goals in reply to "coin" command
- - Ignore generation address/script on pools using non-default mining goals
- - Only include block display lines for active goals
- - Move income to block display line, and show extra block display lines for each
- additional mining goal
- - New --pool-goal option to set a distinct named goal per-pool
- - Parameterise most references to global mining_goal_info
- - Move block_time to be per block_info
- - Show "?" for income if block height is unknown
- - Move block height tracking onto block_info
- - Calculate current_fullhash only when needed (for RPC 'coins')
- - Replace current_block_id with blkchain->currentblk[->block_id]
- - Move current_hash to goal->current_goal_detail
- - Clean up struct block_info names
- - Use full prevblock hash as block key (also gets rid of dead code)
- - Move global variables related to the blockchain or mining goals on to global
- structs
- BFGMiner Version 4.10.1 - November 29, 2014
- - Upgraded Windows libcurl from 7.38.0 to 7.39.0
- - Bugfix: bytes_free: Set buf to NULL so the bytes_t is reusable
- - Bugfix: minergate: Avoid malloc(0) if stats file has too few values
- - Bugfix: modminer: Avoid leaking devname when detecting claimed devices
- - Bugfix: free memory allocated for config file loading/writing
- - Bugfix: nanofury: Avoid NULL pointer dereference on init failure
- - Bugfix: varint_decode: Correctly decode multibyte numbers
- - cpu: Fix processor count detection with HW_NCPU
- - cpu: SCHED_IDLE and SCHED_BATCH can only be used with sched_priority 0
- - cpu: fix sched_setaffinity parameter : sizeof(cpu_set_t)
- - Bugfix: opencl: Correctly accept negative intensities and set dynamic
- intensity without changing current value
- - Since longpoll connections are never reused, explicitly forbid reuse so
- libcurl cleans them up immediately
- - Bugfix: Correct already-in-use getcbaddr message
- - Demote some Bitfury debug log messages to only with device protocol dumping
- - Update bundled libbase58 to 0.1.3
- - README.ASIC: Minor cleanups to Zeusminer section
- - README.ASIC: Explain Zeusminer options
- - Makefile: Specify .cl files explicitly, and only include scrypt ones when
- configured with scrypt support
- - Bugfix: DevAPI: hashes_done: Explicitly cast to uint64_t for big calculations
- (LLVM was allowing overflow)
- - Bugfix: titan: First core in each die got too big nonce area to work on
- - Travis: Build MinGW64 with ncurses
- - Bugfix: Declare manual_enable_pool in miner.h, for api.c use
- - Bugfix: bitfury: Use long long and llabs to avoid under/over flows misbehaving
- - Bugfix: Highlight all active pools, in pool listing
- - Set quota to 1 when enabling a failover-only pool, and disable failover-only
- when setting quota
- - Bugfix: pool_actively_desired: Detect failover-only conditions for loadbalance
- and balance strategies
- - Bugfix: Only display pools as Failover state when it is effectively so
- - Make sure KEY_EVENT from wincon is ignored (it conflicts with ncurses)
- - README.ASIC: Add details for BFx2 USB
- - Titan: Submit stale shares while doing flushes
- - README.ASIC: Remove CFLAGS hack not needed for KnCMiner Titan build
- - Bugfix: Need unicode_micro in non-Unicode curses builds
- - Remove unused variables from curses-less builds
- - Bugfix: Cannot duplicate userpass option or we end up with it processed double
- BFGMiner Version 4.10.0 - October 21, 2014
- - Upgraded Windows libjansson from 2.6 to 2.7
- - i2c-tools are not required by Titan
- - minergate: Fix hashmeter
- - minergate: Support minergate-side ntime rolling for SP30 only
- - minergate: Autodetect SP30 on /tmp/connection_pipe_sp30
- - minergate: Make stats file configurable
- - minergate: SP30 only wants max 10 queue requests at a time
- - minergate: Use work_completed flag for SP30
- - minergate: Only SP10 has a second winner_nonce
- - minergate: Simplify multi-winner_nonce handling
- - Bugfix: minergate: Correct endian for 2nd winner_nonce
- - minergate: Vary max jobs queued
- - minergate: Vary number of requests/responses per packet
- - minergate: Support --set MGT:protover=N
- - Titan: fix compiler warning "maybe-uninitialized"
- - Titan: Increase die inactivity timeout to 20 secs
- - Titan: Slightly improve some debug messages
- - Titan: Use multi-part batched SPI transfers for flushes (saves 2 secs on each
- flush)
- - Titan: Fix buffer overflow
- - Titan: Increase queue prefill value up to 20
- - Titan: Flag for fast broadcast flushes. Not enabled: DC/DCs trip off easily!
- - Titan: Monitor die health, reconfigure it if no shares in 10 seconds
- - Titan: Make log level of some messages lower, to not clobber the screen
- - Titan: Work assignment and flushing is per-die, not per-ASIC
- - Titan: Set flush flag after re-configuring the die
- - Titan: Refactoring: intermediate variables for first_proc and repr
- - Titan: Flush cores one-by-one right before reconfiguring them
- - Titan: Define for the broadcast core address
- - Titan: Re-configuring dies through API command "procset"
- - Titan: Use correct version of knc_titan_setup_core
- - Titan: configure_one_die func for configuring single die
- - Titan: fill all non-found ASIC structs with the same (invalid) data
- - Titan: Core init parameters (nonce range) independent of number of found dies
- BFGMiner Version 4.9.0 - October 5, 2014
- - Upgraded Windows libraries:
- - - libcurl from 7.37.0 to 7.38.0
- - - libusb from 1.0.18 to 1.0.19 (Win64 only)
- - - mingw64-runtime from 3.1.0 to 3.2.0 (Win64 only)
- - - uthash from 1.9.7 to 1.9.9
- - Travis: Update for titan driver
- - configure: Accept --enable-titan=CONTROLLER to select controller
- - make-release: Remove unnecessary knc-asic/{*.rbf,*system,waas} from release
- source
- - extra_work_queue so devices can influence their effect on the central work
- queue somewhat (titan needs less than 1-per-proc)
- - Avoid adding include paths for titan driver
- - Bugfix: titan: Add missing printf formatting for core busy status
- - avalon: Drop custom hexdump logging
- - Build titan driver independently from knc (Jupiter) driver
- - titan: Do not fill up next slot immediately after urgent setwork
- - titan: Pre-fill work queue so that all ASICs have fresh jobs after a flush
- - Build instructions for KnC Titan
- - Doesn't compile without explicitly included inttypes.h on some machines
- - knc-asic: Updated to e5c986d3c44fde8c5b069508ef6979f2f2be92d6
- - Fix Makefile.am to build bfgminer for titan
- - titan: Subdivide full nonce range only between cores in one ASIC (because
- works are now distributed per-ASIC too)
- - titan: DC/DCs does not like broadcast flushes (urgent setwork). Do not do it!
- - titan: Preparation to setting threads-per-core externally, by user
- - titan: Re-flush cores in case of slot number collision
- - titan: Per-ASIC flush, per-ASIC work management
- - titan: Start cores after flush individually, not by broadcast.
- - titan: Default frequency is 275 MHz
- - titan: Difficulty is offset by one in ASIC cores.
- - titan: Fix first_proc pointer
- - titan: Use 2 threads per core
- - titan: Use setup_core from knc-asic library
- - titan: Poll all enabled ASICs amd dies, not only one
- - titan: Properly set work_accepted flag
- - titan: Hint detection function about expected device type
- - titan: Fix setup_core command
- - titan: Use knc-asic library for transport layer
- - Add knc-asic as submodule
- - titan: Change spi device to spidev1.0
- - titan: Add define to .h file
- - titan: Increase workqueue size up to number of slots per core
- - titan: Send data to hashmeter
- - titan: Disregard stale reports after flush
- - titan: Check for next asic/die switch when processing info results
- - Bugfix: titan: Fix segfault
- - titan: Set actual hardware nonce_diff for works in prepare_work
- - titan: Do clean flush ("purge") on init
- - titan: Store last_nonce right
- - titan: First attempt to process nonce responses
- - titan: Change 'scanhash' minerloop to 'queue'
- - titan: Init all cores for their own nonce ranges
- - titan: For RPi we use spidev0.1
- - titan: Setup_core command implemented
- - titan: New commands set_work & get_report
- - titan: Move asic-specific functionality to the separate file (titan-asic.c)
- - titan: First ugly detect of Titan chip over SPI
- - knc-titan: Begin work on Titan (scrypt miner) driver
- - libbase58: Use git URI for submodule to avoid failure on systems without HTTPS
- support
- - Travis: Cross-compile a Win64 build
- - RPC: Initialise json_config to silence false warning
- - Make sure MOUSE_MOVED from wincon is ignored (it conflicts with curses)
- - Travis: Perform full builds with libbase58's base58 tool (which is used for
- tests)
- - Travis: Test many configuration variations
- - Travis: Build with libsensors and VFIO
- - Travis: Upgrading GCC triggers locale rebuild, so just do the one in use
- - Travis: No need to upgrade GCC for LLVM build
- - Travis build configuration
- - Run BFGMiner's unit tests for 'make check', and have --unittest exit with
- failure if any problems occur
- - libbase58: Update to pick up on LLVM fixes
- - Bugfix: configure: Affect gridseed driver with --disable-other-drivers
- - Bugfix: configure: minergate driver needs lowlevel for claiming sockets
- - Bugfix: configure: --disable-other-drivers should not affect non-driver
- options
- - Bugfix: configure: --with[out]-vfio needs $withval, not $enableval
- - Bugfix: rockminer: Correct types for short read error message
- - Bugfix: icarus: fix the STATS RPC API call crashes with a multi-proc device
- - Bugfix: cointerra: Check lowlevel device is USB before trying to probe it (as
- USB)
- - bitforce: Reinstate device work inprogress count sanity check for 28nm devices
- - littlefury: Read uC temperature sensor
- - littlefury: Keep track of enabled chips and power state explicitly in case of
- trouble
- - Bugfix: async minerloop fix for devices disabled at start
- - twinfury: Implement device protocol dump more low-level
- BFGMiner Version 4.8.0 - September 10, 2014
- - Improve precision of total_secs used in (at least) RPC summary Elapsed
- - Bump embedded libblkmaker to 0.5.0
- - Bump embedded libbase58 to 0.1.1
- - Remove now-unused bfg_cond_timedwait which cannot be made portable
- - Spawn a new thread for cmd-idle rather than relying on problematic pthread
- timedwait
- - README: --coinbase-check-* options
- - Bugfix: Accept actual percentages for --coinbase-check-percent
- - Optimise coinbase check logic by using actual script bytes everywhere possible
- - Pool option #skipcbcheck to disable new coinbase checks
- - pool_check_coinbase: Avoid redisabling an already misbehaving pool
- - Bugfix: Keep connection active for rejecting and misbehaving pools so we can
- detect when they recover
- - Share pool coinbase check reaction code
- - Initial version of coinbase checking function for GBT and stratum
- - cointerra: Ensure devlog messages cannot overflow
- - Bugfix: cointerra: Defer setting USB timeout until after initialisation
- - cointerra: Set configuration and claim interface
- - Bugfix: cointerra: Check ep is open before trying to talk to it (crash at init
- failure)
- - cointerra: Support for --set cta:load=N
- - cointerra: Store load setting on struct cointerra_info
- - cointerra: Operate within a single thread
- - cointerra: Update to minerloop_queue
- - cointerra: Split work packet into cointerra_queue_append function
- - cointerra: Prepare for splitting work packet into cointerra_queue_append
- function
- - cointerra: Use more fresh code for work packet
- - cointerra: Use fresh code for work packet
- - Bugfix: cointerra: Use bfg_cond_timedwait to avoid spinning
- - cointerra: Claim and release lowlevel device
- - cointerra: Propagate per-core temperatures to each processor
- - cointerra: Reduce redundant stats information
- - cointerra: Correctly divide up individual processors
- - cointerra: Update to latest BFGMiner
- - work_ntime_range helper function
- - work_{get,set}_ntime inline functions
- - Store a reference timeval with ntime_roll_limits
- - util: min macro
- - cointerra: Cleanup debugging
- - cointerra: Divide up processors
- - cointerra: Wait for info packet on probe
- - cointerra: Dirty BFGMiner port
- - lowl-usb: Cleanup dead code
- - notifier_wait, notifier_wait_us, and notifier_reset functions
- - Export the flush_queue function for use by drivers.
- - Provide a function to discard queued work based on age.
- - Export share_diff function and add flip12 macro
- - Provide a copy_work_noffset function for copying a work struct but changing
- its ntime.
- - Add api_add_int16 to API functions.
- - cointerra: Remove nodev checks for now
- - cointerra: Replace reset semaphore with a simple notifier
- - Build cointerra driver
- - cointerra: Import driver from cgminer as-is
- - Silently ignore shares rejected if they were above target and only got
- submitted "just in case"
- - Abstract put_in_parens function
- - Abstract extract_reject_reason function
- - Remove dead code
- - Bugfix: bfg_cond_timedwait providing semantics expected for --cmd-idle
- implementation
- - Per-processor TUI: Align columns for more-than-one proc letter
- - m4/bundled_lib: Workaround bug in autoconf <2.64
- - If full version is too long, try truncating it at '-'
- - Bugfix: Fix CPU miner benchmarking within benchmark-intense mode
- - benchmark: Detect duplicate shares within 5 minutes
- - benchmark-intense: benchmark_update_interval constant in code
- - benchmark-intense: Detect stale results
- - benchmark-intense: Update work every second
- - benchmark-intense: Simulate 250 KB generation transaction
- - benchmark-intense: Generate individual work items from 2D work (tests host CPU
- rate of work production)
- - Introduce --benchmark-intense option
- - Import libbase58 for base58 encoding/decoding
- - Cleanup libblkmaker bundling code to mostly live in autoconf macros
- - Always check if we should switch pools when enabling one, and always enable
- pools we want to switch to
- BFGMiner Version 4.7.1 - September 10, 2014
- - Bugfix: Reorder LDADD and such for priority
- - Bugfix: bitforce: Initialise variable to NULL
- - Bugfix: SSM: Use client_next member consistently when working with
- stratumsrv_connlist
- - Bugfix: SSM: Check that a username is provided to mining.authorize
- - Bugfix: SSM: When n2pad<0, release lock before returning
- - Bugfix: SSM: Make buffers long enough to avoid overflows
- - Bugfix: Need signed types for ntime min/max offsets
- - Bugfix: rockminer: Fix processor disabling
- - rockminer: Limit even unsafe frequencies to 640 MHz, since above that
- overflows frequency bits and triggers fan control
- - tq_pop: Remove abstime argument since nothing used it and it wouldn't work
- anyway (uses CLOCK_REALTIME while we use CLOCK_MONOTONIC[_RAW] when possible)
- - Bugfix: Check last solo generation tx against new template rather than most
- recent
- - README: Explicitly mention automatic solo mining configuration, and stress the
- importance of --coinbase-sig
- - Bugfix: Recheck current_pool after calling pool_died
- - Bugfix: Stable pool recovery: Only care if the pool is enabled
- - README.ASIC: Add a section for Gridseed
- - Bugfix: benchmark: Free json_null() after use
- - Bugfix: minergate: Claim socket before we initialise a cgpu for it
- - Bugfix: avalonmm: Claim device before we initialise a cgpu for it
- - Bugfix: switch_pools: Broadcast lp_cond outside of control_lock to avoid
- deadlocking
- - Protect enabled_pools by a mutex in disable_pool function
- - Combine reject_pool into disable_pool function, and don't allow it to override
- a manual disable
- - Call disable_pool() at the begin of remove_pool() and combine them when
- appears together in the code
- - Bugfix: Always call enable_pool and disable_pool to ensure consistent handling
- of the situations
- - Remove dead CPU mining code to silence warnings
- BFGMiner Version 4.7.0 - August 17, 2014
- - openwrt/multibuild: Avoid copying bitforce-firmware-flash, which is no longer
- included
- - AUTHORS: Simpler design, alphabetise lists
- - Remove obsolete SuSE packaging
- - Bugfix: test_hash: Fix Htarg calculation for exact binary divisions of diff 1
- - Fix target calculation from diff < 1.0 in test_hash()
- - avalonmm: Try to autodetect a sane default voltage and clock from MM version
- - avalonmm: Only poll one module at a time, so they don't try to talk over each
- other
- - avalonmm: Set baud rate for detection
- - Stratum: Ignore response from mining.extranonce.subscribe
- - Stratum: Implement mining.set_extranonce, and advertise support for it to
- pools with a #xnsub flag
- - Stratum: Keep nonce1 and n2size in a "staging" state until mining.notify is
- received
- - Stratum: Avoid putting new targets on pool stratum_work until mining.notify is
- received for it
- - minergate: Flush during init
- - minergate: Flush ready-to-queue list
- - minergate: Avoid preparing new jobs to queue while we are pending a flush,
- since the flush would occur after queuing the new jobs
- - minergate: Check for reused job ids
- - minergate: Avoid counting flushed jobs toward hashes done
- - minergate: Report all temperatures individually to RPC
- - minergate: Load temperatures from stats file
- - minergate: Implement hashmeter
- - minergate: Scale nonce difficulty up to pdiff 32
- - minergate: Implement mining
- - minergate: Support for detecting a SP10
- - Bugfix: configure: avalonmm needs work2d
- - Bugfix: bitforce: Remove sanity check triggered by race conditions on 65nm
- devices
- - Bugfix: bitforce: Avoid double-free of voltage data
- BFGMiner Version 4.6.0 - August 2, 2014
- - avalonmm: Even if no fans report speed, display set %
- - Bugfix: avalonmm: Fix fan speed setting
- - Bugfix: avalonmm: Actually read the result needed to get the correct module id
- - README.ASIC: Document AvalonMM driver usage with Avalon 2/3 rigs
- - Bugfix: Makefile.am: Remove reference to non-existent driver-avalonmm.h
- - avalonmm: Safely handle an improper job id that is within the last 2 sent
- - avalonmm: Include asserted fan speed in RPC
- - avalonmm: Include asserted fan speed in ManageTUI
- - avalonmm: Silence warning about detect ack at runtime
- - avalonmm: Make fan speed an option (both RPC and TUI)
- - avalonmm: Allow changing clock speed and voltage from Manage TUI
- - Bugfix: avalonmm: Show proper units for fans & voltage
- - avalonmm: Support for disabling the entire chain
- - Implement broad_udevrules for avalonmm
- - avalonmm: Show extranonce1, module id, temperatures, fans, clock, and voltage
- in Manage TUI
- - avalonmm: Include Module Id and ExtraNonce1 in RPC devdetails
- - avalonmm: Add Temperature0/1 and Fan Percent 0/1 to RPC
- - avalonmm: Add Frequency and Voltage to RPC
- - avalonmm: Add voltage setting (defaults to 0.6625 V)
- - avalonmm: Add clock setting and try to autodetect it if not provided
- - avalonmm: Implement hashmeter
- - avalonmm: Adjust device target up to pdiff 32 when possible
- - avalonmm: Update job when current pool changes
- - Bugfix: avalonmm: MM flips the xnonce2, so we need to do the same
- - avalonmm: Implement mining logic
- - lowl-spi: Move bit order reverse to bitflip8 function in util
- - avalonmm: Treat multiple chained modules as slaves rather than processors
- - avalonmm: Probing for devices using Avalon Miner Manager (Avalon2/3 rigs)
- - littlefury: Move crc16 logic to util
- - Use BUILT_SOURCES to ensure version.h is always built first
- - configure option --with-udevrules-group to allow customising the group name
- used
- - Bugfix: zero_stats: Only call cgpu function if it exists
- - Remove FPGA-only bitforce-firmware-flash tool (now located at
- https://github.com/luke-jr/bitforce-fpga-firmware-flash )
- BFGMiner Version 4.5.0 - July 26, 2014
- - Bugfix: zeusminer: Fix crash in TUI with newly introduced feature
- - Bugfix: gridseed: Fix crash in TUI with newly introduced feature
- - gridseed: Add the ability to set clock speed via the TUI
- - bitforce: Support for Monarch devices on Windows using new "mswin" lowlevel
- interface to scan for KMDF driver
- - Bugfix: gridseed: Implement a proper scanhash routine for GridSeeds
- - zeusminer: Add the ability to set clock speed via the TUI
- - Bugfix: gridseed: Only set PLL frequency once (not once per processor)
- - Bugfix: zeusminer: Retry detection on failure - ZM fails detection 1 / ~30
- times
- - Bugfix: zeusminer: Enabling the ZeusMiner driver should flag needing lowl-vcom
- - aan: Silence false warnings
- - Include broad udev rules when configured with --enable-broad-udevrules option
- - Bugfix: util: Lower the threshold for considering pool Scrypt diff broken
- - Bugfix: gc3355: Do not send work_id (or anything) in the last 4 bytes of work
- - gridseed: Refactor code to clean up and organize
- - gridseed: Document GridSeed specifics with comments and URLs
- - Copyright cleanups and updates
- - Bugfix: zeusminer: using icarus timing can lead to false positive Idle
- detection
- - zeusminer: Return the Chip # via the RPC API call procdetails
- - zeusminer: Display the Chip # in the UI when viewing per-proc details
- - Bugfix: miner: Check work->blk.nonce to see if work should be abandoned
- - rockminer: Allow setting clock 300-2560 as long as prefixed by "unsafe:"
- - util: Work around broken Scrypt pools automatically using realistic pdiff
- assumptions
- - scanhash: Document scanhash related methods with comments
- - Bugfix: gridseed: Report communication errors using dev_error()
- - gc3355: Return bytes read to distinguish 0 bytes from error
- - Bugfix: gridseed: Add delay between Scrypt reset and sending work
- - gridseed: Bugfix: fix the constant used for estimated hash rates
- - klondike: zero_stats support
- - bitforce: zero_stats support (Temperature, Voltage, and Avg Wait)
- - avalon: zero_stats support (temp_max, no_matching_work, match_work_count%d)
- - Add driver interface for zero_stats function
- - Bugfix: bitforce: Short-circuit bitforce_read(0) to avoid lowlif issues
- - Bugfix: bitforce: Ensure data for the current command is always read (and only
- once), with lowl-pci
- - Bugfix: setup-vfio: Add device ids to vfio-pci even if they didn't have a
- driver previously
- - Bugfix: lowl-pci: Use volatile qualifier for PCI mmaps
- - Bugfix: bitforce: Use lowlevel interface device was probed with, for actual
- mining
- - setup-vfio: New shell script to automatically configure VFIO
- - README.ASIC: Monarch: Need to do new_id for every affected device, and only
- after unbinding them
- - README.ASIC: Monarch: Use shell variables for commands
- - gridseed: Bugfix: Revert earlier changes to scanhash based on feedback
- - hashfast: Support for changing clock at runtime
- - hashfast: Store a copy of what we believe to be the chip configuration data
- - hashfast: Store firmware revision
- - util: pk_uNle macro for changing a number inside a packed structure
- - README.ASIC: KnCMiner: Talk about additional i2c-tools dependency
- - README.ASIC: KnCMiner: Remove mention of now-obsolete Bertmod
- - README.ASIC: KnCMiner: Grammatical corrections
- - Bugfix: RPC: Avoid processor-specific details in devdetails
- - gridseed: Bugfix: log invalid detect responses as debug info, not an error
- - zeusminer: Support setting clock via RPC API procset call
- - README: Add Controla and Minera controller software links & info
- - gridseed: Bugfix: Fix hash-rate calculation when no nonces are being found
- - dualminer: Bugfix: assign the proper value for work_division
- - gridseed: Refactor to clarify GridSeed terminology
- - gridseed: Add support for displaying per-chip statistics
- - gridseed: Convert to use newer set_device_funcs interface
- - Bugfix: gridseed: Don't leak cgpu_info when devices are already claimed
- - icarus: Processor detail support
- - DevAPI: Allow using device_proc_by_id with const struct cgpu_info
- - icarus: Ensure fpga_count is finalised before add_cgpu is called
- - icarus: Move work_division autodetection code into new
- icarus_probe_work_division function
- - icarus: Remove ability to change fpga_count at runtime
- - Bugfix: gen-version.sh: Replace bashism ("here string")
- - gridseed: Support devices with more than 255 physical processors
- - Use `git describe` to generate version.h to avoid user confusion over builds
- from git
- - zeusminer: Support devices with more than 255 physical processors
- - hashfast: Include chip/core address in RPC procdetails
- - gridseed: Reduce traffic sending work to GridSeed devices
- - gridseed: Bugfix: previous refactor (unpublished) changed logic
- - gc3355: Refactor to remove SHA2 code specific to the 5-Chip GridSeed Orb
- - lowl-vcom: Bugfix: do not attempt to open the USB devices when enumerating
- BFGMiner Version 4.4.0 - July 7, 2014
- - Update official Windows build compiler from GCC 4.7.3 to 4.7.4
- - lowl-vcom: Added support for auto scanning (-S auto) on Mac OS X
- - rockminer: implement --device-protocol-dump for debugging
- - README: Update for commandline options
- - README: Update configure options
- - Bugfix: bfg_gpio_setpin_output: Clear alt-function bits via INP_GPIO macro
- - jingtian: Explicitly configure SPI device while opening
- - jingtian: Toggle ASIC reset GPIO at startup
- - aan: Set defaults as soon as a proc is initialised
- - aan: Allow specifying clock as xHEXX for a raw PLL register config
- - aan: Include current frequency in RPC status
- - aan: Implement --set jtn:clock=MHz
- - aan: Logic to calculate PLL configurations for a given frequency
- - jingtian: Use SPI enable GPIO to disconnect SPI during chipselect changes
- - aan: Set PLL to 850 MHz
- - aan: Simplify register buffer
- - jingtian: Decode extra temperature bytes in read_reg
- - aan: Add a read_reg hook
- - aan: Enable configuring nonce diff with (eg) --set jtn:diff=32
- - aan: Properly handle nonce_diff
- - aan: Implement mining
- - DevAPI: Some designs set the main thr tv_poll from secondary thrs, so check it
- after the loop
- - aan: aan_spi_parse_rx implies spi_clear_buf
- - jingtian: Do detection asynchronously across all possible chipselects so they
- complete in parallel
- - aan: Refactor aan_spi_cmd a bit
- - jingtian: Implement device protocol dump
- - jingtian: Detection-only code for new driver
- - lowl-spi: GPIO access functions
- - lowl-spi: Move knc_spi_txrx to linux_spi_txrx
- - SGW: Support for proxy-share difficulty preferences
- - SSM: Propagate proxy-share difficulty changes to established connections
- - SSM: Track stratum connections for each proxy user
- - SSM: Track authorised users for each connection
- - SSM: Initialise proxyshare difficulty from --set pxy:diff=N
- - proxy: Accept --set pxy:diff=N to set preferred proxyshare difficulty
- - proxy: Provide a place to store desired proxyshare difficulty on a
- per-username basis, and copy it to SSM connections when authorising them
- - SSM: Track proxy share difficulties
- - Expose target_diff function and add pdiff_to_bdiff macro
- - util: double_find_precision function to identify ideal precision for a fp
- number
- - work2d: Expose WORK2D_MAX_DIVISIONS in header
- - add_local_gbt: Avoid adding servers already configured
- - Bugfix: Avoid writing automatically configured local GBT servers to the config
- file unless they have been manually enabled
- - add_local_gbt: Use rpcconnect when configured
- - rockminer: Bugfix: must specify a baud rate (maximum of 115200) to get a read
- response
- - Bugfix: Use atexit() to ensure a final \n is always printed at exit to work
- cleanly with new logging design
- - Restore compatibility with old versions of libblkmaker
- - Bugfix: probe for ZeusMiner before probing for DualMiner
- - Wait until coinbase-addr is needed again, before updating it following a block
- change (always using getaccountaddress)
- - Don't automatically use #getcbaddr for local bitcoind if the user provided
- their own
- - Bugfix: refresh_bitcoind_address: Check for NULL json (which is not JSON
- "null")
- - Bugfix: add_pool: If no current pool set, initialise it (otherwise pool
- testing may start a longpoll thread which tries to access currentpool
- uninitialised)
- - devpath_to_devid: *nix: Reject anything that doesn't begin with a /
- BFGMiner Version 4.3.0 - June 30, 2014
- - Bugfix: zeusminer: Include config.h
- - openwrt: Disable libusb via --without-libusb
- - Avoid waiting for local bitcoind test if we have other pools defined already
- - lowl-pci: Silence warning on big endian
- - bitfury: Portability fixes, including big endian compatibility
- - Bugfix: bifury: strtoll already implies native endian, no need to flip it
- again
- - bitforce: Additional sanity checks, including ensuring our final queued count
- matches that seen by the device
- - bitforce: Go back to ignoring race-triggered sanity check warnings for ZqX
- - bitforce: Refactor FLB and queue flush sanity checks
- - bitforce: Use binary FLB protocol for Monarch
- - bitforce: Add bitforce_read function to deal with binary responses
- - bitforce: Support for queue id based jobs
- - Make work->device_id unsigned
- - bitforce: Support device explicit "Scan Interval" to override hardcoded sleep
- times
- - bitforce: Allow queued_max to exceed BITFORCE_MAX_QUEUED_MAX iff the firmware
- provides an explicit Queue Depth
- - bitforce: Fix bitforce_chips_to_plan_for to work beyond 32 chips
- - configure: Clean up zeusminer logic
- - icarus: Use estimated hashes for hw errors (more accurate hashrate for devices
- where hw error values vary significantly from hashes performed)
- - zeusminer: Bugfix: calculate work_division based on chips and cores
- - Replace swabn with bswap_32mult (matching swap32yes parameters and
- performance)
- - Bugfix: zeusminer: Correctly encode job header regardless of native endian
- - zeusminer: support added for ZeusMiner scrypt ASICs
- - icarus: refactoring: commenting ICARUS_INFO members
- - icarus: Accept any power of two as a valid work_division
- - icarus: option added for Icarus-based drivers to ignore the golden nonce
- during probe
- - util: is_power_of_two function
- - Bugfix: Display proper statline R and HW error percents for values < 1
- - openwrt: Provide scrypt option
- - Benchmark: Debuglog headers generated
- - Bugfix: cpu: Fix scrypt CPU miner
- - Bugfix: scrypt: Fix scrypt hash postprocessing for big endian
- - Bugfix: scrypt: Correct endian handling in PBKDF2_SHA256_80_128
- - scrypt: Add unit test for scrypt_1024_1_1_256_sp
- - scrypt: Add unit tests for PBKDF2_SHA256_80_128 and salsa20_8
- - Bugfix: Copy ALL the data with swap32to<native>
- - Automatically add pool configured from bitcoin.conf for failover only
- - Add failover_only pool flag, to avoid using it regardless of strategy
- - Accept --default-config option to search and load default configuration files,
- even if user is specifying their own
- - Use appdata_file_call to find BFGMiner config file(s)
- - util: appdata_file_call and appdata_file_find_first functions
- - ccan: Update to latest version (which includes floatval option support)
- - Bugfix: Adapt quit function to new logging design
- - Workaround GCC 4.6 initialisation bugs with BYTES_INIT
- - Bugfix: Use int rather than ssize_t to type-match %d expectation
- - Minor refactor of text-only mode: avoid wasting bottom line of console, and
- save status lines as they are replaced by log items
- - Bugfix: Wake up wait_lpcurrent if its conditions for returning may have
- changed
- - Defer determining --quit-summary default until it is needed, so hotplugged
- devices affect it
- - Bugfix: In benchmark mode, only remove the new pools after putting them in the
- array, since the removal will try to remove it from the array
- - Bugfix: Initialise struct pool in add_pool rather than halfway through startup
- - URI parameter #getcbaddr to request coinbase address from bitcoind or
- compatible servers
- - pool_set_uri function
- - util: bytes_eq and bytes_assimilate
- - Replace struct _cbscript_t with bytes_t for simplicity
- - Bugfix: Parse userpass option with strchr rather than strtok to avoid
- usernameless passwords getting into the username field and being displayed
- - Bugfix: Free old coinbase script before setting a new one
- - util: upper_power_of_two_u32 function
- - Avoid unnecessarily finding drivers in a loop
- - lowl-pci: Never probe via -S *:all
- - configure: Succeed even if the libblkmaker submodule is missing (only
- --with-system-libblkmaker)
- - rockminer: Reset task timeout when queuing work
- - rockminer: When we detect a task failure, check if we ought to grab a new work
- rather than resend
- - rockminer: Add a time limit before resending work even outside of midtask
- state
- - Bugfix: rockminer: Keep count of requested jobs properly
- - make-release: Include ccan LICENSE symlinks as symlinks even in ZIP
- - make-release: Ensure ccan licenses get included in source
- - Bugfix: make-release: Correctly avoid unused parts of ccan
- - make-release: Do builds with the official source release, to test that it
- works
- - Bugfix: DevAPI: Make for_each_logical_proc work correctly
- - Avoid double hashing of shares
- - Create work_hash function to abstractly produce work->hash from work->data
- regardless of algorithm used
- BFGMiner Version 4.2.0 - June 11, 2014
- - Upgraded Windows libmicrohttpd from 0.9.35 to 0.9.38_pre33603
- - SGW: Workaround BE Cube bugs with new libmicrohttpd by forcing HTTP 1.0
- response
- - rockminer: Increase hw error count for problems
- - rockminer: Autodetect with "R-BOX miner" or "RX-BOX miner" product strings
- - rockminer: Support for seeing and setting clock frequency in Manage TUI
- - rockminer: Include clock frequency in RPC processor status
- - rockminer: Support for setting clock frequency
- - rockminer: Workaround lost tasks by resending them
- - rockminer: Support for temperature sensors
- - rockminer: Debug messages
- - Bugfix: rockminer: Initialise rockminer_chip_data
- - Bugfix: rockminer: Ensure work actually exists before testing against it
- - rockminer: Mine at 270 MHz
- - rockminer: Implement mining (at 200 MHz)
- - DevAPI: Move device_proc_by_id out of bifury driver, since it is generically
- useful
- - rockminer: Detection code for new driver
- - bfg_socket wrapper to ensure sockets are close-on-exec
- - set_cloexec_socket: Explicitly cast SOCKET to HANDLE
- BFGMiner Version 4.1.0 - June 6, 2014
- - Bugfix: Ensure variables are declared even without ADL support
- - RPC: Include a list of config files loaded in "config" reply
- - Bugfix: Save a linked list of config files loaded so output makes sense
- (previously only the most recent config file was named, and errors were reported
- inconsistently)
- - README.RPC: Document Coinbase-Sig in config reply
- - Bugfix: Safely handle pool status line when no pools are alive
- - bitforce: Refactor bitforce_vcom_gets slightly to be more sane
- - Bugfix: initiate_stratum: Ensure extranonce2 size is not negative (which could
- lead to exploits later as too little memory gets allocated)
- - Stratum: extract_sockaddr: Truncate overlong addresses rather than stack
- overflow
- - Stratum: tlsca parameter to require CA validation of TLS certificate
- - Bugfix: Avoid setting tv_idle before testing pool (it will be set if the test
- fails)
- - restart_stratum: Make use of return_via
- - return_via helper function family to assign a variable and goto
- - Bugfix: restart_stratum: Release pool_test_lock on failure
- - bfsb: Disable all banks before enabling the one we want, to avoid having two
- enabled at the same time (eg, when switching from bank 3 to bank 2)
- - Interpret present "tls" parameter to require TLS
- - uri_get_param_bool2 returning a tristate
- - Tests for uri_find_param
- - Split uri_find_param out of uri_get_param_bool
- - gridseed: Allow specifying an arbitrary number of chips with --set gsd:chips=X
- - gridseed: added support for the 80-chip (two blades of 40 chips) G-Blade
- Scrypt-only miner
- - Bugfix: gridseed: use a signed integer so that returning -1 has defined
- behavior
- - RPC: Return integer difficulties without decimal places
- - Bugfix: Zero pool "Works"
- - Bugfix: Set any listening sockets to close-on-exec/non-inheritable to avoid
- issues rebinding them on restart
- - RPC: Explicitly shutdown communication on client sockets to avoid them being
- held open by forked processes
- - RPC: Clean up mcast socket with tidyup_socket
- - RPC: Move socket tidyup code to its own function
- - Bugfix: RPC: Use pthread_exit rather than returning from the RPC thread, to
- ensure tidyup gets called
- - Bugfix: bitforce: During initialisation, clear each XLink slave exactly once
- only
- BFGMiner Version 4.0.0 - May 26, 2014
- - Update openwrt Makefile for xz source
- - Update libblkmaker to 0.4.0
- - Workaround Homebrew-induced segfault during device scan
- - Allow hotplug with scrypt
- - Bugfix: test_domain_funcs: printf precisions must be int, not size_t
- - littlefury: Cleanup to make avoiding memory leak easier
- - Bugfix: Avoid using an enum type to hold a bitfield
- - ruby extension is "rb" not "py"
- - README.RPC: Document api-example.rb
- - Add Ruby Api Example
- - hashfast: Check devices with Product matching "GoldenNonce" so we have a
- vendor-neutral way to detect them
- - Reduce set_device-not-implemented message to debug log level, since it can
- occur for init-only settings
- - Use a mutex to block pool_active on a common check per pool at any given time
- - Use cURL return code to check if cURL sockets hit CURLE_AGAIN
- - Abstract pool_recently_got_work into a dedicated function
- - AUTHORS: Dmitry Smirnov contributes BFGMiner packaging to Debian
- - README: Talk about more GUIs and mining OSs
- - icarus: Minor optimisation (swap byte order in 32-bit always-aligned groups,
- and skip pointless memory copy)
- - icarus: Initialise ob_bin to avoid leaking other memory to device
- - Bugfix: bitfury: Set stat_elapsed_secs early, just in case we jump with goto
- - Bugfix: Report actual kernel name in RPC, rather than kernel interface name
- - README.scrypt: Document psw kernel
- - opencl: Another optimised scrypt kernel ("psw")
- - README.scrypt: Document zuikkis kernel
- - opencl: Optimised scrypt kernel ("zuikkis")
- - Bugfix: Silence harmless warnings
- - Bugfix: vcom_set_timeout: Return whether successful
- - bitforce: Set name for ASIC devices
- - Bugfix: Avoid unnecessary rescans due to wrong devtype
- - bitforce: Support 28nm ChannelNN format for ZCX
- - Bugfix: bitforce: Don't confuse channels with X-Link
- - Bugfix: bitforce: Set VCOM timeout to 1 second for ZGX request, since it
- sometimes lacks a newline
- - lowl-vcom: vcom_set_timeout function
- - bitfury: Eventually (after 30 seconds) give up trying to detect chip
- generation and just assume gen1
- - bitfury: Use other nonces for gen1 detection so one bad core can't break it
- - Bugfix: bitfury: Account for necessary nonce fudging during chipgen detection
- - gridseed: Switch from the Queued miner loop to the Scanhash miner loop
- Improves performance on Raspberry Pi Fixes inaccurate hashrate estimates Fixes
- bug overwriting work inadvertently
- - If the current pool lacks its own block change detection, keep the pool used
- for that connected
- - pool_active_lp_pool function to complement select_longpoll_pool
- - Track which pools have active longpoll connections
- - Avoid retrying longpoll requests for removed pools (and possibly change block
- change notification source for existing ones) if longpoll connection gets
- dropped
- - util: Pass full json_rpc_call_state to upload_data_cb
- - Remove now-unused variable
- - nanofury: Update enable/disable/reinit to cleanly handle multichip devices
- - bifury: Default max_queued to chips * 5 + 6 so it is back up to the original
- 16 for bi*fury (which seems to need it sometimes)
- - bifury: Default max_queued to chips * 5 for extra breathing room (avoids
- occasional issues with Hex*Fury)
- - README.ASIC: Document workarounds for OSM/Hex*Fury firmware bugs
- - bifury: Measure hashes done by nonces found since we cannot tell what
- generation chip is in use
- - bifury: Default max_queued to chips * 4
- - bifury: chips init setting to workaround buggy hardware which reports wrong
- chip count
- - bifury: free_after_job setting to workaround buggy hardware which ignores
- maxroll
- - bfg_strtobool helper function
- - bifury: Enable runtime modification of max_queued
- - bifury: Migrate to set_device_funcs interface
- - Stratum: Accept a "notls" parameter on pool URIs to disable opportunistic TLS
- - uri_get_param_bool helper function for pool parameters
- - nanofury: Only ramp up osc6_bits on multichip devices
- - Bugfix: nanofury: Move the bitfury pointer back to the last element before
- starting the ramp up loop
- - Bugfix: Use pdiff 1/0x10000 for scrypt benchmarking
- - benchmark: Use sane bits (of a very high difficulty to avoid triggering
- anti-reorg protections)
- - Ignore work difficulty minisculely harder (ie, rounding error) than what
- device supports
- - Benchmark: Add 2D work support
- - SSM: Use a lower share difficulty in scrypt mode
- - Rework test_nonce to share common logic for scrypt and SHA256d
- - work2d: Accept nonce difficulty with submissions
- - configure: Make work2d building abstract from libevent
- - work2d: Standardised way to pad extranonce beyond what work2d manages
- - Abstract code from stratumsrv_mining_submit into new work2d_submit_nonce
- function
- - Avoid handling hex encoding in work2d
- - Move/rename _ssm_gen_dummy_work to work2d_gen_dummy_work
- - SSM: Refactor _ssm_gen_dummy_work to work with struct stratum_work instead of
- struct stratumsrv_job
- - Move "nonce1" session id from struct pool to struct stratum_work
- - Add pool and work_restart_id to struct stratum_work so they can be used
- independently of struct pool
- - Move n2size from struct pool to struct stratum_work
- - autogen.sh: Automate cleaning INSTALL out of libblkmaker so git updates
- properly
- - Update libblkmaker to 0.4.0
- - Replace drv_rolllimit with struct ntime_roll_limits
- - util: Unpack and pack utility functions ([u]pk_u{8,16,32}{le,be})
- - GBT: Do not allow drivers to roll ntime
- - GBT: Use libblkmaker 2D work to service SSM and potentially other 2D work
- drivers
- - Hide blktemplate_t behind bfg_tmpl_ref to abstract reference counter
- - Add pool_has_usable_swork function
- - SSM: Split stratum work division into 2D work manager ("work2d")
- - bitforce: Avoid crashing when broken devices report more jobs flushed than
- they had to flush
- - nanofury: Gradually ramp up osc6_bits for NF6 design
- - util: memrchr is not portable (GNU extension), so implement our own my_memrchr
- - bitfury: Report correct hashrate for gen2 chips
- - bitfury: Detect gen2 chips
- - Stratum: If difficulty calculates out to 0.999 to 1, round it up to 1 to avoid
- something SHA2 hardware cannot handle
- - Stratum: If the pool target has changed since the job a work came from, check
- any shares against the new target too in case it expects retroactive difficulty
- adjustments
- - Stratum: Interpret integer difficulty values as pdiff (or Ldiff, for scrypt)
- to avoid losing shares on non-compliant servers
- - Rework difficulty-to-target functions to error on the safe side, and
- consistently work in pdiff or bdiff
- - Simplify stratum to convert difficulty to target immediately
- - Stratum: Attempt connection with unauthenticated TLS, with failover to raw TCP
- - Stratum: Return to curl_easy_{send,recv}
- - get_registered_domain: Return full IP for raw IP addresses, so they can at
- least redirect to the same IP
- - Reject redirection across different registered domain names (can be disabled
- by appending #redirect to pool URI)
- - util: match_domains function
- - util: Add isCalpha, get_registered_domain, and extract_domain functions
- - README: Update for gridseed 5-chip orb
- - configure: Clean up gridseed logic to only build by default when scrypt is
- enabled
- - gridseed: Fix warnings
- - gridseed: Added support for Scrypt hashing with 5-chip GridSeed devices
- - dualminer: Only one debug message needed for all init options
- - dualminer: Move opt_dual_mode to dualminer file
- - gc3355: move scrypt_only_reset_cmd out of scrypt_only_reset
- - dualminer: No need to reconfigure frequency every work
- - dualminer: refactor gc3355 code for readability, maintainability and use with
- other devices
- - dualminer: Abstract dualminer_init_hashrate out of dualminer_init_firstrun
- - dualminer: Initialise opt_pll_freq along with opt_sha2_units
- - dualminer: Move opt_sha2_units initialisation to new dualminer_set_defaults
- function
- - dualminer: Remove unnecessary opt_sha2_number
- - dualminer: Simplify teardown
- - dualminer: No need to parse strings for SHA2 unit counts
- - gc3355: Support for appending jobs with task id
- - gc3355: increase delays to 20ms
- - gc3355: use NULL for end-of-command terminator
- - dualminer: comment what various things are for and/or do
- - dualminer: Split gc3355_scrypt_prepare_work and gc3355_sha2_prepare_work out
- of dualminer_job_prepare
- - dualminer: Use cgsleep_ms rather than usleep
- - gc3355: Remove unused opt_hubfans variable
- - dualminer: rename various things to be clearer
- - Use a common enum bfg_gpio_value for both lowl-vcom (cts, dtr, rts) and
- mcp2210
- - README.RPC: Document quit/restart reply format change
- - RPC: Provide a full status section for quit/restart commands
- - RPC: Add "Miner" to version response to include software name along with
- version
- - Bugfix: Dereference udev monitor events when done with them
- - opencl: Workaround false warning regarding Mesa version number parsing
- - knc: use_dcdc setting that Nov batch users can use to disable DCDC usage
- - configure: Include <stddef.h> for _Static_assert check
- - opencl: If kernel does not specify an interface in scrypt mode, assume it's
- the scrypt interface
- - opencl: Replace dated versioning with hash of source code
- - opencl: Search all the same kernel paths when setting kernel
- - opencl: Accept arbitrary kernel filenames, provided they specify a kernel
- interface somewhere in the source file
- - Bugfix: Explicitly pass precision and width as int type
- - Make pool stability message use nicer English
- - Failover pool switching back delay is now configurable.
- - Expand extranonce2 size to 64-bit
- - README.ASIC: KnCMiner: Suggest --disable-other-drivers and remove
- no-optimisation CFLAGS
- - configure: libusb is implied by lowl-usb, so no need to list it as an option
- separately
- - Silence warnings when built without various drivers
- - DevAPI: Remove long deprecated serial_detect function family
- - Bugfix: Turn spidevc into lowl-spi to fix building the knc driver without the
- bitfury driver
- - Avoid triggering unnecessary device rescans (such as with pre-lowlevel
- drivers)
- - Replace --no-client-reconnect with --no-pool-redirect which also disables
- X-Stratum header redirects
- - Partial: A new --no-client-reconnect command that disables the
- 'client.reconnect' function.
- - ftdi: Rename files to lowl-ftdi.{c,h} to fit with naming convention
- - bfx: New driver for BFx2 Bitfury USB stick miners
- - ftdi: ft232h_mpsse_readwrite_all function to do both reading and writing
- concurrently in MPSSE mode
- - ftdi: ft232h_mpsse_set_axbus function
- - ftdi: Support for ft232h MPSSE mode (currently only works with
- ft232r_write_all)
- - ftdi: Split most of ft232r_open into a ftdi_common_open function
- - ftdi: Support for --device-protocol-dump
- - ftdi: Scan for ft232h-based devices
- - ftdi: Avoid neutering lowlevel_device_info when opening it
- - ftdi: Accept const data in write functions
- - ftdi: Use actual USB packet size for FTDI status removal
- - ftdi: Make ftdi lowlevel code independent of x6500 driver
- - dualminer: Workaround false compiler warning in gc3355_config_cpm
- - Bugfix: --disable-other-drivers should not force libusb to be unused
- - Bugfix: README: Alphabetise and categorise build configuration options (and
- add missing ones)
- - TUI: Use _wlogprint for pool proto to avoid compiler warning
- - Bugfix: TUI: Fall back to RPC URI if sockaddr_url hasn't been extracted (such
- as benchmark mode)
- - Hide work update messages unless explicitly enabled with hidden
- --verbose-work-updates flag
- - TUI: Redesign pool info line to include share difficulties in multipool modes
- and last explicity work update timestamp
- - nanofury: Abstract both power gpios into a nanofury_power_enable function
- - nanofury: Add NANOFURY_GP_PIN_PWR_EN0 (inverted PWR_EN) - support for power
- management (hardware) optimizations
- - Bugfix: nanofury: Set cgpu_data for all processors (eg, to avoid crashing in
- nanofury_set_ledmode for non-first procs)
- - Bugfix: nanofury: Use correct SPI port for baud setting
- - proxy: "Report in" clients when their info is looked up by username
- - opencl: Replace (and deprecate) --no-opencl-binaries option, with --set
- opencl:binary=no
- - opencl: Reenable OpenCL kernel binaries for Mesa OpenCL >= 10.1
- - gc3355: Replace frequency-setting hex blobs with logic
- - README: Update for DualMiner
- - make-release: Switch to xz for source releases
- - Stratum: If a pool explicitly tells us it doesn't support get_transactions, no
- need to wait for a timeout
- - api - buffer size off by 1 for joined commands
- - miner.php - define a default rigport (that can be changed) and don't require a
- port number in the rigs array
- - miner.php allow links for rig buttons in tables and allow using the 4th IP
- octet if no rig name - default disabled for both
- - Remove wrong goto
- - Remove the unqueued work reference when we discard work from get queued as'
- well.
- - Wake the global work scheduler when we remove a work item from the unqueued
- work pointer.
- - Discard work that is stale in the get_queued() function, returning NULL
- instead.
- - Bugfix: dualminer: Declare support for both SHA256d and scrypt algorithms
- - gc3355: Use lowl-vcom set_serial_dtr function
- - lowl-vcom: Implement set_serial_dtr
- - gc3355: Use lowl-vcom cts/rts functions
- - lowl-vcom: Implement set_serial_rts for Windows
- - lowl-vcom: set_serial_rts should return the new rts value, if anything
- - Rename icarus-common.h to driver-icarus.h
- - icarus: probe_timeout setting to control how long we wait before giving up on
- probes
- - icarus: Defer initial open until init
- - Remove debugging garbage that snuck in
- - configure: New --disable-other-drivers options for users who want to build
- just select drivers
- - Simplify _now_gettimeofday on Windows, working around weird WINE crash
- - cpu: Fix and simplify benchmarking on Windows (removes hidden --bench-algo
- option)
- - Remove old bench_block.h, no longer needed
- - Bugfix: cpu: Adapt benchmarking code to new benchmark work generator
- - Report precise share difficulties below 1
- - Bugfix: lowlevel: Pretend drivers not matching the active algorithm don't
- exist
- - Bugfix: dualminer: Set min_nonce_diff before getting work
- - Bugfix: gc3355: Use correct byte counts for hex2bin
- - configure: Fix up dualminer logic
- - dualminer: Support for mining both Scrypt and SHA2 using DualMiner GC3355
- thumb sticks
- - miner: scan for low level devices even if --scrypt is specified by the user
- (to detect Scrypt ASICs)
- - icarus: output protocol information if the user specifies
- --device-protocol-dump
- - icarus: Support for driver-specified job command lengths
- - icarus: Support for custom driver job start function
- - icarus: Support for custom driver initialisation function
- - icarus: Call icarus_job_prepare via driver job_prepare key so it can be
- overridden
- - icarus: generic support for devices that return little-endian nonces
- - icarus: allow custom probes
- - icarus: expose do_icarus_close
- - RPC: Remove separate CPU and GPU counters from devs Msg
- - RPC: Optimise find_index_by_cgpu
- - Bugfix: RPC: Restore PGA index counting
- - Accept decimal values for --shares, and clarify weighed nature of the value
- - benchmark: Remove all real pools, and prevent adding them
- - benchmark: Fake submission of "shares"
- - benchmark: Roll data before nonce only
- - Bugfix: configure: Report bitforce:pci instead of bitforce:uio
- - bitforce: Workaround broken/old compilers by setting device_fd outside of
- initialisation
- - AUTHORS: Update email for Kano
- - RPC: Add "MHS rolling" key to status mirroring "MHS %ds"
- - minorfix: remove extra semicolon
- - Drillbit: Revert needless commit 270c1d01f, thanks @luke-jr
- - Drillbit: Add upper and lower bounds to "Eight boards have a multiple of 8
- ASICs" check
- - Drillbit: Clarify use of device_data pointer to store capabilities/protocol
- version temporarily
- - Drillbit: Keep reading work for as long as the device returns results.
- - Drillbit: Be strict about not accepting any boards with newer protocol
- versions. Protocol version bumps are non-backwards-compatible.
- - Drillbit: Add support for "protocol version 4", non-device-specific
- configuration packet format
- - README.RPC: Add link to Node.js RPC wrapper
- - opencl: Get temperature and fan speed updates with get_stats interface rather
- than abusing statline override interface
- - Bugfix: Remove devtype variable from driver API
- - opencl: Deprecate --auto-{fan,gpu} and --gpu-dyninterval options
- - opencl: Infer autoengine mode when the clock setting receives a range
- - opencl: Infer autofan mode when the fan setting receives a range
- - Bugfix: opencl: Defer initial intensity assignment until init, so opt_scrypt
- has a chance to be set
- - opencl: Strip leading and trailing spaces from names
- - trimmed_strdup helper function
- - icarus: Replace hard-coded "Icarus" mentions
- - opencl: Deprecate all dedicated commandline options for parameters accessible
- via set_device
- - opencl: Make current intensity, xintensity, and oclthreads available via RPC
- - opencl: Redo Manage TUI detail line to use xintensity when more reasonable
- - opencl: Support for setting oclthreads as intensity=xNNN (for NNN xintensity);
- also allow setting d<whatever> for an initial dynamic intensity
- - opencl: Store oclthreads and only convert to/from intensity numbers when
- dealing with external interfaces
- - RPC: Deprecate all cpu* and gpu* commands, and remove CPU/GPU counts from
- 'devs' response
- - RPC: pgarestart command to match {cpu,gpu}restart
- - RPC: Unify common code under get_pga_cgpu function
- - README.RPC: Deprecate gpu{intensity,mem,engine,fan,vddc} now that they can be
- accessed via {pga,proc}set
- - RPC: Consider CPU and OpenCL devices as "PGAs" to begin migration to a simpler
- interface
- - RPC: Turn gpu{intensity,mem,engine,fan,vddc} into wrappers around set_device
- - opencl: Support configuration using set_device interface
- - Bugfix: miner_thread: Don't call cgpu_set_defaults if it has already been
- called
- - Common add_set_device_option for automatically generated --set-device options
- - Bugfix: opencl: Safely handle work->device_data across work copies and cleans
- - set_device: Accept underscores for temp_{cutoff,target}
- - opencl: Allow specifying a comma separated list for --gpu-threads
- - opencl: _SET_INT_LIST2 to set variables not necessarily within
- opencl_device_data
- - hashfast: Enable setting device-wide clock at probe time using USB_INIT
- - Bugfix: hashfast: Use signed type for manipulating raw temperature data, in
- case it is below 0 C
- - hashbusteravalon: Add udev rule
- - klondike: Split up work and submissions among logical processors
- - klondike: Make reply_wait_time a settable variable (configured lower for
- hashbusteravalon)
- - klondike: Explicitly enable slaves as well as the master
- - hashbusteravalon: Klondike-based metadriver
- - klondike: Pre-initialise klninfo separately from probe
- - klondike: Allow setting max_work_count and max_work_time via set_device
- - klondike: Variablise max_work_count and old_work_ms
- - Move all OpenCL-specific data behind device_data pointers, and relocate
- OpenCL-specific code out of miner.c
- - opencl: Macro-ise code for list options
- - Reduce failure applying set-device rules to debug loglevel
- - Add --set as alias for --set-device
- - Bugfix: miner.c: Correct ccan include
- - Bugfix: Correct ccan-upstream directory include
- - Load default config before commandline options, so the latter override the
- former (but prioritise defaultconfig pools last)
- - configure: Check for sys/termios.h used by ccan/opt
- - make-release: Only include specific components of ccan
- - Use git submodule for ccan (moving opt_*_floatval into miner.c)
- - Probe erupter before icarus, since they are far more common now
- - Accept --no-config option to inhibit loading default config file, even without
- specifying another config
- - Bugfix: RPC: Ensure isjoin always gets initialised
- - bitforce: Remove two really-unused variables
- - nanofury: Silence false warning from some compilers about uninitialised
- variable use
- - hashfast: Promote problematic write() replies to warning level
- - hashfast: Log errno on write failures
- - Extend maximum processor count to 17,576 (3 letters)
- - DevAPI: Make processor lettering code more extensible
- - Remove shorthand option for undocumented --bench-algo
- - Remove long-deprecated and non-functional --enable-cpu option
- - Deprecate shorthand options for uncommonly-used --algo, --cpu-threads,
- --expiry, --gpu-threads, --intensity, --kernel-path, --kernel, --scan-time,
- --vectors, and --worksize
- - API-README correct new text format documentation
- - API allow multiple commands/replies in one request
- - Due to work restarts causing ~all processors to request work at once, it is
- always ideal to stage at least mining_threads extra works
- - scrypt: raise the maximum GPU intensity for scrypt mining to 31 - benefits
- shown for AMD R9 290 models
- - Bugfix: bitforce: ZNX/ZWX expect size minus 1
- - Bugfix: bitforce: Start building send_queue command at the real end
- - Bugfix: bitforce: Defer opening until after devdata is initialised (since it
- is now used to track open-ness)
- - Document uio/vfio configure options as --without-* since they are enabled by
- default when available
- - Include list of lowlevels built in configure and --help output
- - lowl-pci: Autodetect build-time support for UIO and/or VFIO during configure
- - README.ASIC: Document how to use Monarch in a PCI-Express arrangement on Linux
- - lowl-pci/vfio: Support pread/pwrite access to bars
- - lowl-pci: Support for vfio
- - Abstract UIO-specific code from bitforce driver into lowl-pci
- - bitforce: Initialise lasttag based on response register
- - bitforce: Tie in UIO with lowl-pci
- - lowl-pci: New lowlevel driver for raw PCI devices
- - util: bfg_slurp_file function to quickly read a file
- - bitforce: Support for PCI interface via UIO
- - bitforce: Hide vcom interfaces behind new struct bitforce_lowl_interface
- - bitforce: Let the lowlevel interface deal only with the actual device
- cgpu_info
- - bitforce: Abstract most of VCOM layer away from driver code
- - bitforce: Avoid checking fd by adding is_open flag
- - bitforce: Replace BF{open,close} with more abstract bitforce_vcom_{open,close}
- - bitforce: Abstract fd access mostly down to BFgets/BFwrite
- - bitforce: Support for 28nm WX single-stage bulkqueue command
- - bitforce: Use enum for style (FPGA vs SC)
- - bitforce: Remove never-used and buggy "work queue" mode
- - Round temperature to an integer in thermal cutoff warning
- - Bugfix: icarus: Initialise read_count and other timing-related variables
- - Change default log interval to 20 seconds
- - hashfast: Bump default thermal cutoff temperature to 100 C
- - Bugfix: DevAPI: Ensure temp-cutoff and temp-target are always supported
- settings
- - Bugfix: Initialise cutoff and target temperatures in allocate_cgpu if not
- initialised by the driver
- - Include temperature in thermal cutoff warning
- - Avoid automatic rescans when hotplug is disabled
- - nanofury: New "ledmode" RPC setting, to control LED behaviour
- - nanofury: Support for changing baud rate
- - nanofury: Detect number of chips, so multiple can be used
- - bitfury: When detecting chips, oscillate slower and tolerate clocks outside of
- a predefined range
- - Default --quit-summary to devs if there are more than 24 processors
- - Control printing of quit device summary with --quit-summary option
- - bitfury: Migrate all drivers to set_device_funcs interface
- - drv_set_defaults: Take devpath and serial params so matching by those can work
- - avalon: Replace avalon-options with set_device_funcs
- - klondike: Replace klondike-options with set_device_funcs
- - Replace temp-cutoff and temp-target parameters with set-device options
- - README.FPGA: Update documentation for Icarus driver
- - icarus: Replace icarus-timing with set_device_funcs (including wrapper for
- single icarus-timing case)
- - icarus: Replace icarus-options with set_device_funcs (including wrapper for
- single icarus-options case)
- - drv_set_defaults2 function to work with set_device_funcs
- - icarus: Clarify user_set flags with an enum
- - icarus: Clarify reopen modes with an enum
- - Accept parameter to set_device "help" as a request for help on a specific
- setting
- - set_device_funcs support for returning messages on success
- - RPC: Support for alternate message strings
- - bitfurce: Use new set_device_funcs interface
- - Refactor set_device interface to use option arrays
- - configure: Turn _Static_assert into a noop if the compiler lacks support
- - Store when the last getwork was retrieved and display it in the API summary.
- - bitforce: Consistently use fd -1 when device is not open
- - hashfast: Support for voltage in RPC stats
- - hashfast: Support for voltage displayed in ManageTUI
- - hashfast: Support for temperature
- - Trigger automatic rescans if an expected probe fails (assuming the device just
- needs more time to initialise)
- - Schedule rescan after a 1 second delay, should it be requested twice
- - hotplug: Wait 100ms before rescanning, so plugging in a hub can be handled at
- once and drivers have time to finish initialisation
- - Linux hotplug: Ignore EAGAIN and EINTR from epoll_wait so debugging works
- - Common hotplug_trigger function to use regardless of platform-specific
- implementation
- - Autoscan for new devices on Linux using libudev
- - Autoscan for new devices on Windows when DBT_DEVNODES_CHANGED message is
- broadcast
- - Replace suffix_string with a wrapper around format_unit3
- - Skip lowlevel-based scans in scrypt mode
- - README.GPU: Document new opencl autodetect behaviour
- - opencl: Enable by default in scrypt mode
- BFGMiner Version 3.10.1 - May 26, 2014
- - Upgraded Windows libraries:
- - - libcurl from 7.34.0 to 7.37.0 (and SSL support enabled)
- - - libjansson from 2.4 to 2.6
- - - libmicrohttpd from 0.9.30 to 0.9.35 (now Win64 also)
- - - libusb from libusbx 1.0.17 to 1.0.18
- - DevAPI: for_each_{managed,logical}_proc helper macros
- - Update libblkmaker to 0.3.3
- - make-release: Copy submodules from local system
- - make-release: Automatically determine DLL dependencies to include
- - Bugfix: littlefury: Avoid memory leak for already-claimed devices
- - Bugfix: drillbit: Avoid 9-byte memory leak for already-claimed devices
- - Bugfix: lowl-ftdi: ft232r_close: Free device handle
- - Bugfix: bitfury: Avoid memory leaks when detect fails
- - Bugfix: klondike: Correct case of dname
- - Bugfix: hashfast: Set LIFE_INIT2 so a dead engine doesn't hold up the stats
- line
- - Bugfix: bitforce: Restore device name loading for FPGA Singles
- - Bugfix: Add config.h include to files missing it
- - Bugfix: swap32to?e: Ensure conditionals always have the same type
- - Bugfix: Protect prev_cancelstate variables under console lock
- - opencl: Silence warning about duplicate const qualifier
- - hashbuster: Avoid signed char problems in return status check
- - Bugfix: bfg_claim_any: Use a mutex to avoid races around device claims
- - SSM: Silence JSON parse error message for HTTP POST and TLS attempts
- - bifury: Defer precision loss until after checking osc6_bits value
- - opencl: bfg_clBuildProgram function to share common error handling (logging)
- code
- - opencl: Avoid printing empty build logs
- - Bugfix: opencl: Free allocated memory when done with it
- - Bugfix: Stratum: Use an error buffer on struct pool rather than the stack, so
- it remains valid for the lifetime of the connection
- - Bugfix: Reset tv_idle on pools after test failure
- - Bugfix: Ignore last work time if pool is known to be down
- - pick_unit: Avoid infinite loop when passed inf float
- - Bugfix: bitfury: Correct comment about how much of the nonce range chips
- process
- - Bugfix: Initialise getq (and stgd_lock) earlier so it is ready in case startup
- interactive pool-add tries to stage work
- - bitfury: Wait for two low frequency measurements before acting on a freq drop
- (in case of a single misread)
- - Bugfix: SSM: decref parsed JSON when done with it
- - knc: Replace numeric constants with KNC_CORES_PER_DIE, KNC_DIE_PER_CHIP, and
- KNC_CORES_PER_CHIP defines
- - Bugfix: knc: Actually skip over extra processors rather than infinite loop
- - Bugfix: Use rlim_t type for old_soft_limit so comparison with RLIM_INFINITY is
- correct on all platforms
- - Update alloca logic to work on more platforms
- - start-bfgminer.sh: Shell script to (re)start bfgminer in a background screen
- session
- - Bugfix: Handle disabled CPU support properly in various places
- - Bugfix: README.ASIC: KnCMiner: Use supported Angstrom feeds only
- - Bugfix: pool_active: Skip testing explicitly when we have a recent answer
- - RPC: Use struct timeval for mcast bind timer
- - Bugfix: Restore 2-minutes-past-last-work wait before terminating unused
- stratum connections
- - Partial: Bugfix: Turn spidevc into lowl-spi to fix building the knc driver
- without the bitfury driver
- - SSM: Silence JSON parse error message for HTTP attempts
- - Bugfix: Use UTF-8 for micro prefix internally (and in logging)
- - Consistently allocate space used for formatting numbers
- - util: utf8_len and utf8_strlen functions to quickly measure a character or
- string
- - Bugfix: README: Add missing driver build configuration options
- - Bugfix: renumber_cgpu: No need to copy dev_repr over itself (and trying to is
- undefined)
- - Move OpenCL kernel FAQ to README.GPU and clarify it a bit
- - Bugfix: Log work updates for all active pools in multipool mode
- - test_work_current: Cleanup
- - Bugfix: Differentiate pool_actively_desired from pool_actively_in_use for
- cnx_needed
- - Abstract pool_actively_in_use to handle multipool checking for multiple uses
- - Bugfix: antminer: Fix typo
- - Bugfix: renumber_cgpu: Rebuild repr strings to match new information
- - Bugfix: Skip final pool_active check in balancing modes (where pools switch
- around often)
- - Bugfix: Adjust quota GCD only after completely adding the pool, otherwise it
- will be ignored by the adjustment
- - Bugfix: opencl: Can only BFI_INT patch if using OpenCL binaries
- - SGW: Support for scrypt
- - README: Document VCOM low_latency flag and latency_timer sysfs attribute,
- which can help run more VCOM-based devices on low-end USB hosts
- - Add USB faqs.
- - Bugfix: Stratum: Wait a bit for a response before assuming the pool is hiding
- block contents
- - README: FAQ about Raspberry Pi issues
- - Check for when errno is set on windows as well as the windows variant for
- errors.
- - Partial: Handle interruptions to various select calls in util.c
- - Bugfix: configure: Only fail due to not having libusb, if the user really
- needs or wants libusb
- - Bugfix: Update help display to replace (U)tility with (I)ncome
- - Bugfix: Deduplicate % symbols in help display
- - Bugfix: Correct documentation for --shares option
- - cpu/scrypt: Fix last_nonce to be host endian also
- - Bugfix: cpu: Correct results found by scrypt algorithm
- - Bugfix: lowl-vcom: _get_osfhandle failure returns INVALID_HANDLE_VALUE, not
- NULL
- - Bugfix: lowl-vcom: Invalid fd checks should be for -1, not 0
- - Bugfix: SSM: Actually acquire and release extranonce1s
- - Bugfix: C reserves identifiers beginning with an underscore and uppercase
- letter or another underscore
- - Skip trying to submit shares in benchmark mode
- - Rework benchmark mode
- - Bugfix: configure: Only pull in lowl-usb for lowl-vcom if libusb is available
- - Bugfix: hashfast: Ensure size of hex data passed to applog is of type int
- - README.ASIC: Update "SGW" virtual device identifier to current "PXY"
- - Bugfix: klondike: Reenable hw error reporting on nonces found for unknown work
- - Bugfix: Expand deprecated work->subid field to int width, needed by klondike
- driver for tracking work
- - Bugfix: erupter: Sapphire detected as Emerald and Emerald not detected
- - configure: Remove duplicate sys/file.h check
- - Bugfix: httpsrv: Add missing includes for stdarg, stddef, stdio, and stdlib
- - hashbusterusb: Initialise send packets fully to avoid leaking uninitialised
- data to devices
- - Bugfix: Correct typo in --help ("AlgoritHms")
- - Bugfix: twinfury: Avoid crashing when next_work is not populated here
- - Bugfix: hashbusterusb: Close device after failures
- - Bugfix: hashbuster: Close device after failures
- - README: List --quota in options
- - README.ASIC: Update documentation for Avalon
- - Bugfix: Leave thr->*work alone when disabling non-minerloop_async devices
- - udev rules: Set flag so ModemManager ignores devices
- - bifury: Thermal overheat causes restart losing the clock, so resend it while
- temperature is over 80 C
- - bitforce: Explicitly assign indexes for bitforce_proto enum
- - Bugfix: RPC: MSG_PGASETOK does not have a string param
- - littlefury: Close device if there are any communication problems
- - littlefury: Abstract out littlefury_set_power
- - Bugfix: hashfast: Add missing serial_claim
- - Bugfix: drillbit: Add missing serial_claim
- - Bugfix: bifury: Add missing serial_claim
- - Bugfix: littlefury: Add missing serial_claim
- - Bugfix: Allocate all new devices completely, before trying to activate any
- (since the first processor may control the secondary ones)
- - Since scrypt miners tend to work at actual share difficulty, use that for
- diff1 counting
- - Bugfix: diff1 measurements should be increased by nonce difficulty, not share
- difficulty
- - drillbit: strtol into a long int so negative responses properly get an error
- - Rename *nonces variables to *_diff1 to reflect their nature better
- - Refactor diff1 records to properly weigh non-diff1 work
- - AUTHORS: Add Nico Oelgart
- - Fixed multiple XSS injection vectors
- - drillbit: Expand allowed external clock range to 0-65535
- BFGMiner Version 3.10.0 - January 15, 2014
- - Downgrade official Windows build compiler to GCC 4.7.3.
- - Update official Win64 build mingw64-runtime from 3.0.0 to 3.1.0
- - Bugfix: Stratum: Accept JSON Number type for port number
- - Bugfix: proxy: Set start timer when creating new virtual devices
- - antminer: Add support for the Identify function - flashes LED 10 times
- - drillbit: Expand allowed external clock range to 0-255
- - drillbit: Forbid setting external clock usage if not supported by device
- - Check for DBC_TEMP capability before trying to read temperature
- - Bugfix: drillbit: Reduce work message to correct size
- - README: Update documentation for new udev rules and "video" group
- - Bugfix: opencl/adl: Set iSpeedType for get-fanspeed requests, and ensure we
- don't change do something weird with the fan when initially setting user-defined
- speed flag.
- - Bugfix: drillbit: Initialise rv variable
- - Bugfix: Simplify adding "http://" prefix to avoid strncat overflow (length
- excludes null byte)
- - hashfast: Debuglog work flushing
- - hashfast: Implement OP_NONCE search flag
- - hashfast: Log seq numbers for nonces found
- - hashfast: Count hashes done by nonces found, rather than no-pending-work
- (which could be triggered by flushes)
- - hashfast: Just keep a queue of the 32 most recent work items per core
- - hashfast: Convert to minerloop_queue driver model
- - hashfast: Gracefully complain if we are given an unknown chip or core address
- - udev rule for hashfast devices
- - hashfast: New driver using UMS protocol
- - CRC-8-CCITT implementation
- - AUTHORS: Add Lingchao Xu and move nwoolls up to antminer driver (and mention
- TwinFury driver for Andreas)
- - knc: Workaround false compiler warning about "uninitialised" vars
- - Bugfix: drillbit: Access fd after potentially reopening
- - Remove Christmas colouring
- - drillbit: Add udev rule
- - drillbit: Correct configure logic to check for generic bitfury code (needed to
- decode nonces)
- - drillbit: Implement some basic problem recovery
- - drillbit: Support identify command
- - drillbit: Read/write access to clock and voltage configuration from RPC and
- ManageTUI
- - drillbit: Store board configuration
- - drillbit: Read temperature sensor
- - drillbit: Check nonces against prev work
- - drillbit: Implement mining
- - drillbit: Only detection code
- - antminer: Initial support for the Bitmain AntMiner U1 ASIC Includes support
- for identifying the U1 separately from Icarus and Block Erupter Also includes
- overclocking via --set-device antminer:clock=xHEX
- - Extend horizontal lines to full screen width
- - Log devid for USB string request failures
- - Bugfix: segmentation fault if the terminal window is too narrow for the Help
- and Quit items
- - Accept "address" spelled out in --coinbase-addr option
- - Bugfix: document the need to package zlib1.dll in the Windows build
- instructions
- - Bugfix: Stratum: Re-read pool sock var after suspend+restart
- - Silence false uninitialised var use warning and calculate dev_runtime only
- once
- - Bugfix: HID API not properly detected on Mac OS X
- - Adjust device list size as necessary when accessing options
- - Avoid erasing the screen when statusy is not changing
- - Abstract common set_statusy code out of change_logwinsize and check_winsizes
- - TUI: Support pgup/pgdown for scrolling device list by page
- - Bugfix: icarus: quirk_reopen is an int
- - Bugfix: Do not allocate spi_port on the Stack, even to initialize -
- EXC_BAD_ACCESS on OS X
- - get_statline3: Simplify statistics gathering
- - Bugfix: twinfury: Use serial number formatted over USB, so it works with
- --scan
- - twinfury: Only debuglog temperature debugging data when --device-protocol-dump
- is enabled
- - Bugfix: twinfury: Populate temperature info on both processors
- - Option --weighed-stats to display A and R values weighed by difficulty
- - README.GPU: Document always-disabled-by-default for OpenCL driver
- - AUTHORS: Add Nate Woolls
- - Extend menu to full width of window
- - Abstract out spaces-to-eol to bfg_wspctoeol function
- - Elaborate on spi_port+stack problem in comments
- - Bugfix: Do not allocate spi_port on the Stack - EXC_BAD_ACCESS on OS X
- - Bugfix: don't attempt to probe Bluetooth devices when scanning hardware
- - x6500: Allow overriding the maximum frequency used by the dynclock logic Can
- now use e.g. --set-device x6500:maxclock=210 Prevents spending time on
- frequencies that only produce HW errors
- - HACKING: Clearly document that dname must be lowercase and alphabetic
- - bifury: Tolerate corruption in submit message, remapping shares to the first
- processor if chip id is unrecognised
- - bifury: Tolerate corruption in hwerror message
- - bifury: Tolerate corruption in job message, and only count hashes done when
- completing a known job
- - Use a lowercase driver name to fix --scan pattern matching Otherwise the
- following doesn't work: -S noauto -S twinfury:auto
- BFGMiner Version 3.9.0 - December 25, 2013
- - Update official Win32 build compiler and library:
- - - Upgrade GCC from 4.8.1 to 4.8.2
- - - Upgrade libcurl from 7.28.1 to 7.34.0
- - Update official Win64 build compiler and library:
- - - Upgrade GCC from 4.7.3 to 4.8.2
- - - Upgrade mingw64-runtime from 2.0.8 to 3.0.0
- - Green-on-red title colours for Christmas release
- - write_config: Include http-port and stratum-port options
- - Interpret F1 as a request for Help
- - Bugfix: SSM: Free old _ssm_notify before replacing it
- - Bugfix: SSM: Clean _ssm_cur_job_work as needed to avoid memory leaks
- - Support matching --scan with lowlevel devid
- - cgpu_match: Unit test for USB device path matching
- - Bugfix: cgpu_match: Handle digits in dname (x6500)
- - cgpu_match: More unit tests (dname with digit)
- - cgpu_match: More unit tests (dname and case insensitivity)
- - Display "NO DEVICES FOUND" line in place of device list, when there are none
- - bitfury: Use drv_set_defaults to enable setting baud before probe
- - bitfury: Split out SPI port configuration option ("baud") to its own function
- - drv_set_defaults wrapper function around cgpu_set_defaults for use with
- options that may need to be set during probe
- - bitfury: Set poll interval to start iteration before responses are processed
- - modminer: Check identification begins with "ModMiner" to avoid false detection
- - Bugfix: hashbusterusb: Correct return value of hashbusterusb_vrm_unlock
- - Support for installing a udev rules file for Linux
- - twinfury: Remove unused variable to silence warning
- - cgpu_request_control should be a noop when called from the main thread
- - Bugfix: Handle errors creating a vcom devid more gracefully
- - Bugfix: _wlog: Allocate enough space for complete copy of log line
- - bfsb: Remove unused clock_gettime
- - Bugfix: bfsb: Remove useless slot_on which was never properly initialised
- - Bugfix: When QueryDosDevice fails, skip trying to parse its (undefined)
- results
- - hashbusterusb: Voltage should be in volts (not millivolts) for RPC
- - hashbusterusb: Provide access to VRM stuff from RPC
- - hashbusterusb: Use cgpu_request_control interface to safely access device from
- outside main thread
- - hashbusterusb: Include Voltage in RPC stats
- - Bugfix: hashbusterusb: Ensure unlock code is always allocated, even if null
- - hashbusterusb: Abstract code into hashbusterusb_vrm_lock
- - hashbusterusb: Abstract code into hashbusterusb_vrm_unlock
- - hashbusterusb: Abstract code into hashbusterusb_set_voltage
- - Bugfix: hashbusterusb: Check for voltage change error correctly
- - Abstract mutex_request code from X6500 driver into generic device API
- interface
- - hashbusterusb: Use standard identification behaviour
- - hashbusterusb: Abstract hashbusterusb_set_colour function
- - hashbusterusb: Get voltage with temperature
- - hashbusterusb: Clean up unused variable warnings
- - hashbusterusb: Use bitfury_wlogprint_status for osc6_bits displaying in Manage
- TUI
- - Bugfix: hashbusterusb: Remove ignored prompt for VRM lock
- - hashbusterusb: Use Manage/osc6_bits code from main bitfury driver
- - hashbusterusb: Provide access to VRM and identification in Manage TUI
- - hashbusterusb: Shutdown PSU
- - nanofury: Support identify function by turning off LED for 5 seconds
- - nanofury: nanofury_state structure
- - bitfury: Set poll interval to start iteration before responses are processed
- - Twinfury: moved voltage reading to the thread init function
- - Twinfury supply voltage initial reading: error log improved
- - Twinfury: Reading supply voltage on startup
- - Voltage scaling for twinfury implemented
- BFGMiner Version 3.8.1 - December 9, 2013
- - bfgminer-rpc: Catch error when server host fails to resolve to an IP
- - RPC: Remove unnecessary delay from RPC server startup
- - Call WSAStartup for our own needs independently of libcurl etc
- - hashbusterusb: Give more meaningful errors before serial number is known
- - hashbusterusb: Populate device_path with USB devid
- - Rename hashbuster2 to hashbusterusb (only a-z allowed in driver names)
- - Include libusb in options list, since it is no longer tied to specific drivers
- - Make hashbuster serial number output match formatting on physical board
- - Fix for hashbuster first init after power up
- - Workaround Microsoft's non-standard swprintf
- - vcom: Fabricate vcom devinfo for any existing paths specified to --scan, in
- case enumeration fails
- - Bugfix: hashbuster2: Check for errors setting up libusb handle
- - Bugfix: Draw statuswin in line order to ensure overflow is cutoff properly
- - Fixed one byte stack overflow in mcast recvfrom.
- - Bugfix: Let libc do any translation for %lc before adding wide characters to
- curses
- - Specifically handle mining.get_transactions failures so they get logged at the
- lower debug loglevel
- - Bugfix: lowlevel: Use LL_DELETE2 when cleaning up secondary list
- BFGMiner Version 3.8.0 - December 1, 2013
- - Bugfix: lowl-usb.h: Add missing includes for stdbool/stdint
- - hashbuster2: Retry writing request if no response received in 100ms
- - lowl-usb: usb_ep_set_timeouts_ms function that behaves similar to termios
- VTIME (timeout before begin of read/write)
- - hashbuster2: Use new lowl_usb_endpoint for i/o
- - lowl-usb: Add tools for more reliable read/write using bulk transfers
- - Add bytes_extend_buf, bytes_preappend, bytes_postappend for reading direct to
- a bytes_t
- - New / updated instructions for building bfgminer on Windows
- - configure: Adjust header-path discovery to work sanely with spaces and
- backslashes in paths
- - Bugfix: configure: More fixing BSD sed syntax for curses header search
- - bitfury: Reinitialise chips if their frequency drops over 50%
- - bfg_strerror: Trim C whitespace off the right of FormatMessage output, since
- Windows can add \r\n
- - Demote commonish errors to debug loglevel
- - klondike: Add support for Avalon2-based designs
- - klondike: Remove unnecessary limit of 999 on clock speed displayed in Manage
- Device
- - Bugfix: hashbuster2: Claim USB device internally
- - Bugfix: hashbuster2: Do not try to use lowl-hid.h
- - Bugfix: hashbuster2: Close device and free memory allocated, when no chips are
- found
- - Bugfix: hashbuster2: Remove libusb init and debug level setting
- - Bugfix: hashbuster2: Avoid add_cgpu when no chips found
- - Bugfix: klondike: Claim USB device internally
- - Bugfix: devpath_to_devid: Check stat for error before allocating memory
- - Bugfix: lowlevel: Free hash table data when done with it
- - Bugfix: bifury: Free memory used by version reply
- - bfgtls: Implement destructor to free memory when threads exit
- - hashbuster2: Remove unnecessary libusb_detach_kernel_driver
- - hashbuster2: Read unique serial number from device
- - hashbuster2: Use hashbuster2_io for probe
- - hashbuster2: Clean up warnings about unused variables
- - README: Document --enable-opencl configure option
- - README: Update for HashBuster Micro
- - hashbuster2: Integrate into BFGMiner as a separate driver
- - hashbuster2: Import driver for new protocol
- - Bugfix: nanofury: Check if mcp2210_device exists before trying to power it off
- - Bugfix: lowl-vcom: Check for error getting root hub path
- - openwrt: Update package description
- - configure: Add --without-libusb option to explicitly disable using it
- - Bugfix: Pass newlines as ASCII (fixes lack of them in non-unicode builds)
- BFGMiner Version 3.7.0 - November 27, 2013
- - FTDI scan: Use intptr_t to avoid warning about different size type cast
- - Bugfix: proxy: Add missing unistd.h include
- - Bugfix: bifury: Precision specifications should be int, not size_t
- - Bugfix: klondike: Include config.h first
- - Bugfix: binloader: Include config.h first
- - README.ASIC: Include support URI for bi*fury driver and firmware
- - Added MultiMiner as an example of a GUI application that wraps bfgminer using
- the RPC interface
- - Silence non-issue warnings
- - bifury: Add support for hwerror message
- - inc_hw_errors2: Support reporting hw errors without a known nonce
- - bifury: Initialise cutofftemp to 75 C
- - bifury: Turn chips off and on when disabled and enabled
- - bifury: Split out bifury_send_clock
- - Bugfix: bifury: Avoid double-free and double-close on version parse errors
- during probe
- - bifury: Add support for clock command
- - bifury: Update for "job" protocol change
- - bifury: Update to current git
- - bifury: Workaround bugs in older firmware by flooding device with work until
- it proves it has needwork
- - bifury: Attempt to submit shares even if maxroll limit is ignored
- - Clone cgminer's submit_noffset_nonce interface
- - Bugfix: bifury: Check that there is a line before comparing it to "version "
- - bifury: Prune jobs older than 16 queued, to eventually clean up discarded work
- (from flushes)
- - Replace ucs2tochar* with ucs2_to_utf8* to handle Unicode
- - README.ASIC: Document Bi*Fury firmware upgrade
- - bifury: Free work when we know it's complete
- - bifury: Implement hashrate reporting using "job" messages
- - bifury: Tolerate other data before version reply
- - bifury: Abstract line parsing into bifury_readln function
- - Bugfix: bifury: Use a char array, rather than pointer to char array, for
- bifury_init_cmds
- - bifury: Unify SEND devprotodump logging code
- - fpgautils: Skip SetCommConfig on Windows if baud is not to be set
- - Check for U+2022 and replace it with "*" is unprintable
- - Use replacement character for non-printable Unicode
- - Use UTF-8 for Unicode
- - Implement a utf8_decode function to produce wchar_t needed by curses
- - bifury: New driver
- - Bugfix: twinfury: Handle flash request for both chips, and avoid using proc
- uninitialised
- - Bugfix: twinfury: Fix various technicalities
- - Bugfix: twinfury: Remove incorrect tcflush
- - Twinfury communication protocol changed to be more robust. A preamble is sent
- before the actual command.
- - LED flashing changed: - setting a flag and flash the LED during the poll
- cycle - mutex removed
- - Renamed bf2 driver -> twinfury driver bin2hex utility used to convert the
- serial number
- - BF2 driver comment edited
- - BF2 - Twin Bitfury USB miner driver added
- - Deprecate --ndevs|-n (redundant with -d? and GPU-only)
- - Never abort startup just because we have no devices (there may be cases this
- is pointless, but at least it's consistent)
- - cgpu_match: Accept ranges for letter processor specification
- - cgpu_match: Accept ranges for numeric elements
- - test_cgpu_match: Test with more than one device/processor
- - configure: Condense configuration options summary a bit
- - configure: Put configuration options summary back after everything completes
- - Workaround bug in MinGW-w64: Check for strtok_r to be defined at compile-time,
- and don't override it unless we really want to override
- - Bugfix: configure: Use new need_lowl_vcom instead of need_fpgautils
- - configure: Explicitly check for sleep
- - Bugfix: Set LIBUSB_LIBS for non-pkgconf non-header-subdir libusb installations
- - Move unused winsock2.h includes to the end of config.h
- - Use lround instead of llround, since it has better compatibility with older
- MingW and Cygwin versions
- - lowl-hid: Save and use hid_enumerate results from library test
- - Silence Windows build warnings
- - mcp2210: Remove cruft leftover from HID code (moved out)
- - lowl-vcom: sysfs scan: Simplify maybe_strdup into _sysfs_do_read
- - lowl-vcom: sysfs scan: Don't bother getting product string until we confirm it
- is in fact a tty device
- - input_pool: Accept a null password
- - Bugfix: Move const data into the scope it needs to be in
- - Bugfix: Restore case insensitivity to --scan driver names
- - Accept "@" separator for serial/path in --scan to match --device and
- --set-device better
- - README: Uppercase the sequence letter when talking about multiple pools
- - README: Mention "make install" and clarify saving settings
- - Bugfix: avalon: Don't "probe" with -S <path/serial>
- - bitforce: Add lowl_* to bitforce_queue so it can be specified by name as a
- driver
- - Bugfix: devpath_to_devid: Be strict about COM port specifications on Windows
- - Bugfix: avalon: Don't "probe" with -S all
- - Bugfix: Only count devices in -d?
- - RPC: {dev,proc}details: Add 'Processors', 'Manufacturer', 'Product',
- 'Serial', 'Target Temperature', 'Cutoff Temperature'
- - debian: Need to explicitly add opencl support to build.
- - Correctly document klondike as being enabled by default
- - Simplify logic for README.ASIC and README.FPGA install
- - Split fpgautils into lowl-vcom and binloader, and fix internal build
- dependencies
- - Add README.CPU to "make install" distribution when built with CPU mining
- support
- - line 2913 added urlencode
- - Bugfix: RPC: Release apisock on error in tidyup
- - klondike - dont try to flush if not initialised
- - Rename --scan-serial to --scan
- - Bugfix: Handle invalid driver names cleanly
- - Workaround libcurl bug to properly support HTTP proxies for stratum
- - Bugfix: Write klondike options for klondike-options (not icarus options)
- - README.OpenWrt: Change example repository to "latest", and document
- alternatives
- - mcp2210: Add support for --device-protocol-dump
- - Bugfix: Initialise dynamic osc6_bits variables
- - README: Fixed a few typos here and there and improved wording (Thanks
- miningpenguin!)
- - README: Moved CPU sections to README.CPU and elaborated more on it
- - README*: Grammatical cleanups
- - README.ASIC: More KnCMiner
- - README.ASIC: Add section about KnCMiner
- - Bugfix: opencl: Dynamic mode should disable threads for this device, not just
- N after the first
- - Bugfix: Make curses_input return NULL on a blank line, as most callers expect
- - Duplicate (hidden) --userpass option before --pool-priority so it can be used
- in config files
- - Only probe VCOM devices on bare "all" scan-serial request
- - Provide backports of uthash LL_{PREPEND,FOREACH{,_SAFE}}2 (only added in
- 1.9.7, not yet in major distros)
- - Upgrade required uthash version to 1.9.4 for LL_CONCAT
- - README: Update documentation for scan-serial
- - README: Bitstreams no longer included with BFGMiner source
- - README: Remove incomplete and unnecessary list of ASIC/FPGA devices
- - write_config: Add scan-serial and set-device
- - write_config: Update to make JSON Array of named parameters
- - Remove support for comma-separated values in --device, and update
- documentation
- - lowlevel: Collapse multiple lowlevel drivers on the same devid to a secondary
- linked list, and only spawn one thread to probe all lowlevels on a given devid
- - Bugfix: vcom_devinfo_scan: Clean up hashtable when done
- - README: Update cgminer driver FAQ with Windows-specific answer, now that we
- have a workaround for *nix
- - cpu/opencl: Always disable by default; removes deprecated -G option entirely
- - vcom_lowl_probe_wrapper: Attempt to reattach detached USB devices
- - Bugfix: erupter: Prioritise Emerald after Sapphire
- - Bugfix: Allow "drv:auto" to override general "noauto"
- - Bugfix: _probe_device_match: Fix inverted logic
- - Bugfix: Don't try to call lowl_probe for drivers that don't support that
- interface
- - lowl-hid: Use usb devids for libusb-based hidapi devices
- - Replace bfg_claim_hid with lowlevel_claim
- - lowlevel: Generic claim interface for lowlevel info
- - cgpu_match: Compare dev_t under paths
- - Rework -d? output to display more useful information now that device ordering
- is non-deterministic
- - cgpu_match: Add support for matching by serial number or path
- - Unit tests for cgpu_match
- - Rework --device option to accept a pattern and JSON Array in config; removes
- support for processor ranges
- - Remove --remove-disabled option, as it conflicts with hotplug, per-processor
- stuff, etc already
- - Bugfix: Reimplement "noauto" flag
- - Bugfix: Restore "-S foo" without driver name functionality
- - Bugfix: scan-serial: Compare dev_t as well
- - littlefury: Convert to lowl_probe
- - hashbuster: Convert to lowl_probe
- - avalon: Convert to lowl_probe
- - cairnsmore/erupter/icarus: Convert to lowl_probe
- - bigpic: Convert to lowl_probe
- - ztex: Convert to lowl_probe
- - x6500: Convert to lowl_probe
- - nanofury: Convert to lowl_probe
- - modminer: Convert to lowl_probe
- - klondike: Convert to lowl_probe
- - bitforce: Convert to lowl_probe
- - fpgautils: Wrapper to easily adapt an old detectone to new lowl_probe
- - lowlevel: Add match variants of detect functions
- - DevAPI: add_cgpu: Use mutex to ensure thread safety
- - Make detectone_meta_info thread-local
- - New threaded device probe framework
- BFGMiner Version 3.6.0 - November 12, 2013
- - RPC: Bump to 2.2 for Works in POOLS
- - Bugfix: klondike: Don't try to free off the stack
- - configure: Update klondike checks for libusb
- - klondike: Autodetect by VID/PID/Manufacturer, rather than too-short "K16"
- Product search
- - Remove accidentally added ASIC-README
- - klondike: Remove noop identify function
- - klondike: Replace deprecated statline with temperature and ManageTUI stuff
- - --shares should be scaled to diff1 not absolute number of shares
- - More README updates.
- - Minor README updates.
- - sha2 allow external access to some macros and the K array
- - klondike: Fixed a math issue when reporting fan speed on the status line.
- - Add a get and queue helper work function.
- - Reset the work_restart bool after the scanwork loop in case the driver flushes
- work synchronously.
- - Get rid of the stage thread since all work can be asynchronously added now via
- hash_push anyway.
- - Fix for opt_worktime on big endian machines.
- - Do get_work in fill_queue without holding other locks.
- - Make hash_pop signal the work scheduler each time it waits on the conditional
- that it should look for more work.
- - Remove discarded work from quota used.
- - Display works completed in summary and API data.
- - Store how many work items are worked on per pool.
- - Add the ability to add uint8 and uint16 entities to api data.
- - klondike - initialise stat_lock
- - klondike - better to unlock locks than to lock them twice :)
- - Remove roundl check and define
- - 'llround' is more suitable here than 'roundl'
- - klondike - change options to clock and temptarget only
- - klondike - fix another uninit dev warning
- - klondike - downgrade 'late update' but add an idle detect - and correct error
- levels
- - klondike - fix isc uninit warning
- - klondike - drop the device for hotplug if it's unresponsive
- - klondike - single 'shutdown' and ensure it happens
- - klondike remove SCNu8 - unsupported on windows
- - klondike - fix uninitialised dev bug
- - Don't attempt to disable curses or print a summary during an app restart to
- prevent deadlocks.
- - klondike - error condition handling
- - Modify Makefile to only include opencl related code when configured in.
- - Convert opencl to need to be explicitly enabled during build with
- --enable-opencl
- - Implement a cglock_destroy function.
- - Implement a rwlock_destroy function.
- - Implement a mutex_destroy function.
- - Simplify queued hashtable by storing unqueued work separately in a single
- pointer.
- - Add cgminer compatibility macro for ms_tdiff
- - klondike rewrite work control
- - allow __work_complete() access
- - miner.h allow devices to tv_stamp work
- - klondike - can only calculate the nonce difference on or after the 2nd nonce
- - klondike - correct/reverse min/max stats
- - klondike: Remove unnecessary devlock
- - klondike - use a link list queue rather than a circular buffer - and add
- timing stats
- - Klondike - increase circular read buffer size
- - Klondike - extra zero value and range checking in temp conversion
- - klondike - display MHz also
- - klondike correct cvtKlnToC() temperature calculation
- - klondike - correct 1st reply debug based on define
- - klondike - debug dump structured replies
- - klondike - avoid division by zero if maxcount is unexpectedly zero
- - klondike store and report errorcount and noise
- - klondike - fix chipstats api stats buffer overrun with 16 chips
- - klondike add new nonecount only once
- - klondike - report mh/s based on nonces found + put old estimate into API stats
- - klondike use a memcpy
- - klondike fix bracket tabs indenting
- - klondike: Update code to current git
- - Klondike update code to current git
- - Add Klondike to README
- - Add Klondike to README.ASIC
- - Klondike to main directory
- - Klondike consistent code spacing
- - Klondike update driver code to current git
- - klondike: update firmware for 16 chips, add dist files
- - klondike: beta final 0.3.0 release
- - klondike: updated firmware, IOC method
- - klondike: prevent nonces when not state W
- - klondike: added driver config option support
- - klondike: fixes for 300 MHz, fix K1 parts list
- - klondike: update driver, docs
- - klondike: update firmware & utils
- - klondike: updated cgminer driver for 3.3.1
- - klondike: update firmware and driver, create new cgminer fork
- - update klondike driver
- - klondike: add cgminer driver file as-is
- BFGMiner Version 3.5.2 - November 12, 2013
- - README.scrypt: Update to reflect current status of code (unmaintained); remove
- Con's litecoin donation address (leaving his bitcoin one) since it is unknown if
- he still accepts donations with litecoin
- - Bugfix: minerloop_async: Check the correct _mt_disable_called flag
- - bitforce: Allow ZCX response to override Manufacturer string
- - Bugfix: RPC: Restore null termination on responses
- - Bugfix: configure: We need DLOPEN_FLAGS for lowlevel hid too
- - Add additional debug information to help track work through BFGMiner
- - README: Update hidapi dependency for HashBuster
- - Bugfix: bigpic: Convert device serial and nonces to host endian
- - Bugfix: modminer: Ensure devices that fail probe are closed properly
- - Bugfix: bitforce: Ensure devices that fail probe are closed properly
- - Bugfix: littlefury: Ensure devices that fail probe are closed properly
- - Bugfix: bigpic: Ensure devices that fail probe are closed properly
- - nanofury: Attempt to be more resilient to problems
- BFGMiner Version 3.5.1 - November 7, 2013
- - Bugfix: make-release: Add README.GPU document
- - Demote USB string fetch failure to LOG_DEBUG since it is rather common
- - Bugfix: RPC: devscan shouldn't be available to read-only access
- - Bugfix: bigpic: Ignore the bitfury chip's counter as best we can
- - Bugfix: bigpic: Accept other delimiters in Bitfury BF1 product string in
- autodetection
- - Bugfix: Fix VCOM/fpgautils build check
- - Bugfix: Only include VCOM code when VCOM/fpgautils support is being built
- - Bugfix: Reimplement scan-serial "all" keyword
- - Bugfix: bitforce detect: Close device after ZGX failure
- - Bugfix: Define lowl_usb even if libusb support is omitted, since VCOM and HID
- drivers check against it for warnings
- BFGMiner Version 3.5.0 - November 6, 2013
- - bigpic: Probe sooner than most drivers, but still after icarus/erupter
- - cpu/opencl: Fix probe priorities to be last
- - Bugfix: RPC: Correct per-device Work Utility to be per-minute instead of
- per-second
- - Bugfix: Fix Windows VCOM enumeration to work with new lowlevel code
- - Bugfix: nanofury: Use maybe_strdup in case strings may be missing
- - Bugfix: bitfury: Fix processor disable/enable for all bitfury-based devices
- - hashbuster: Get temperature when available
- - Bugfix: hashbuster: Use maybe_strdup where there might not be a string
- - hid: Treat null-length strings as missing entirely
- - hashbuster: Enable dynamic osc6_bits
- - hashbuster: New driver
- - Split a hid lowlevel out of mcp2210
- - ztex: Convert to use lowlevel usb enumerator
- - A quick flag to allow drivers to convey the desire to rescan devices (from
- lowlevel up)
- - Lowlevel USB enumerator for libusb
- - dname for lowlevel drivers
- - Bugfix: lowlevel: Avoid null pointer dereference on devices that are missing
- USB strings
- - lowlevel: Add a userpointer to lowl_found_devinfo_func_t and use it for
- serial_autodetect
- - Rework VCOM autodetection to go through lowlevel interface, avoiding repeat
- USB string fetching
- - lowlevel: Keep track of the claimed devid and debuglog every found device
- - ft232r: devinfo_scan: Don't skip claimed USB devices
- - ft232r: Be more tolerant of USB open failure or missing strings
- - RPC: Build most of CONFIG "Device Code" by iterating over registered driver
- list
- - drv_detect_all: Use priority-sorted list of registered drivers
- - Build hash tables to find drivers by dname or name
- - Build a linked list of registered drivers
- - BFG_REGISTER_DRIVER macro to commonly pre-define device_drv structures
- - Move have_libusb checks out of drv_detect_all
- - Replace opt_nogpu with simple function that adds opencl:noauto to scan-serial
- list
- - opencl: Remove ancient gpu_threads variable, not really needed anymore
- - Bugfix: Stop waiting for pool testing as soon as one is active
- - bitfury: Clean up by making private functions static, and naming public ones
- with [lib]bitfury_ prefix
- - bitfury: Remove old (unused) driver code
- - bitfury_gpio: Convert to using current bitfury driver code
- - Bugfix: littlefury: Upgrade to use current bitfury driver (old one didn't work
- with littlefury anymore anyway)
- - Bugfix: test_work_current: Make hexstr buffer large enough for blkhashstr
- later on (issuing old work msg)
- - README: Document --enable-knc configure option
- - README: Document --disable-nanofury configure option
- - Windows autodetect: clear detectone meta info
- - Check for Windows DDK headers, and where they are (and build without them if
- unavailable)
- - Windows SetupAPI-based detection for USB VCOM devices (tested with CP210x and
- CDC)
- - ucs2tochar{,_dup} functions to convert USB string descriptors to char* format
- - bfg_strerror: Support for Windows system errors
- - Introduce applogfail* macros
- - Bugfix: scrypt: Add missing include stdbool.h
- - Bugfix: Explicitly cast uses of be32toh to uint32_t
- - Bugfix: Add missing includes of config.h, stdbool.h, and stdint.h
- - lowlevel: Convey device manufacturer up to nanofury cgpus
- - nanofury: Store device HID path for RPC
- - lowlevel: Promote path to a normal element for devices to simplify things a
- bit
- - nanofury: Claim mcp2210/hid devices
- - mcp2210: Implement claim on HID paths
- - fpgautils: Use string identifiers for internal hardware claims
- - ztex: Keep interface claimed as a lock
- - Bugfix: mcp2210: Check for NULL hid device strings before trying to convert
- them to ASCII
- - FTDI autodetect: Enable populating USB product and serial number
- - Bugfix: FTDI autodetect: Add missing parameter values and remove unused buffer
- - Bugfix: bigpic: Don't active poll event without a poll function
- BFGMiner Version 3.4.0 - October 26, 2013
- - Bugfix: knc: Use separate DEV_RECOVER_DRV deven when doing automatic core
- disable/re-enable, so user-initiated disables are left alone
- - Document existing enum dev_enable usage
- - Bugfix: knc: Only try to re-enable cores after we've actually asserted them as
- disabled, otherwise we won't actually assert the enable either
- - knc: Automatically disable and re-enable problematic cores
- - AUTHORS: Add Dmitry Sorokin
- - bitfury: Disable dynamic osc6_bits when manually setting a specific value
- - bitfury_do_io: Make use of timer_elapsed
- - bitfury: Only use dynamic osc6_bits with boards that support it explicitly
- (BFSB and Metabank for now)
- - bitfury: More debugging info for dynamic osc6_bits
- - Bugfix: bitfury: Fix tv_stat to persist
- - bitfury: Remove useless debugging
- - bitfury: Simplify dynamic osc6_bits logic such that the range is defined in
- one place
- - bitfury: Remove unused skip_stat
- - Bugfix: bitfury: Stick to tracking best_done per-chip, and never call
- zero_stats (which is for users, not drivers)
- - Bugfix: bitfury: Use proc_repr rather than incorrectly calculated chip_id
- - Bugfix: bitfury: struct bitfury_device is already chip-specific
- - bitfury: dynamic osc_6 bits
- - bitfury: Improve frequency calculation - fixes occasional miscalculations as
- well as makes it safer with multiple devices
- - bitfury: Added frequency calculation
- - tm_i2c: Corrected copyright
- - Allow --set-device opt=val without a device specification to attempt setting
- it on every device
- - Bugfix: knc: Maintain queue_full for all cores, so they continue to queue work
- even if the first is disabled
- - bitfury: Allow setting osc6_bits up to 60
- - Bugfix: Set status to LIFE_DEAD2 when killing threads at shut off, to avoid
- calling driver code
- - Skip "testing stability" message at startup
- - Try switching pools if for some reason we end up with only idle pools and have
- ended up current_pool set to an idle one.
- - Check a pool is stable for >5 mins before switching back to it.
- - ManageTUI: Slash key performs processor selection by search
- - nanofury: Populate dev_product and dev_serial
- - mcp2210: Implement mcp2210_close
- - Bugfix: mcp2210: hid_write needs a report id, especially on Windows
- - mcp2210: Workaround some Windows snprintf not handling wide strings correctly
- by simply copying character-per-character (only works for ASCII data)
- - Bugfix: chroot: Check that chdir succeeds
- - AUTHORS: Add pontus
- - knc: Expose Voltage and DCDC Current to TUI Manage device
- - knc: Expose Voltage and DCDC Current to RPC status
- - knc: Store volt/current on knccore
- - knc: Read voltage/current from DCDCs
- - Bugfix: knc: Fix temperature readout of half-celcius
- - Bugfix: Only define have_libusb if building with libusb support
- - littlefury: Remove unused code
- - bitfury: RPC procset: Ignore extra data (like newline) after numbers
- - Add --set-device option to allow setting default procset commands
- - README: Document hidapi dependency for NanoFury sticks
- - AUTHORS: Include Vladimir Strinski for NanoFury code
- - mcp2210: Set GPIO output mode atomically with their output values
- - nanofury: Power off device when shutting down
- - make-release: Include libhidapi-0.dll
- - mcp2210: Port to Windows
- - configure: Find hidapi.h for mcp2210 using pkg-config
- - bitfury: Provide read/write access to osc6_bits from the Manage TUI
- - nanofury: Reduce oscillator bits to 50 to stay within USB specs
- - bitfury: If multiple integers differ after 4 tries, just go with the first so
- we can start mining
- - nanofury: Implement actual mining code
- - nanofury: Turn off device after checkport
- - nanofury: New driver; detect device
- - mcp2210: Implement protocol required for NanoFury USB sticks
- - mcp2210: Skeleton low-level driver for MCP2210 USB to SPI Master bridge
- - ft232r: Use lowlevel interface for ft232r_open
- - Abstract ft232r scan+probe interface into new generic lowlevel driver
- interface
- - configure: Error if knc driver is requested, but linux/i2c-dev.h is missing or
- not from i2c-tools
- - knc: Attempt to express core enable/disable to controller
- - knc: Put knc_device on every processor device_data
- - Refactor device disable/enable logic so that drv.thread_{disable,enable}
- actually get called
- - Bugfix: knc: Check that device actually has work queued, before trying to find
- the most recent one
- - knc: Read temperature sensors
- - DevAPI: minerloop_queue: Run watchdog in device thread
- - knc: Pass queue flush to device when its most recent job produces stale shares
- - knc: Issue flush command at init
- - Bugfix: knc: Perform le32toh on unknown-work nonces
- - knc: Use independent device_id for works to enforce 15-bit size
- - Bugfix: spi_emit_nop: Correct counter logic
- - knc: Implement mining
- - knc: Use FPGA i2c to identify present ASICs
- - knc: Basic detection of boards on expected i2c buses
- - DevAPI: generic_detect: Just use an enum for flags
- - Use list of drivers/algos/options generated by configure in --help info
- - miner.php correct sort gen field names largest to smallest
- - api ... the code related to device elapsed
- - api add device elapsed since hotplug devices Elapsed is less than cgminer Elapsed
- - RPC: Include more info in per-device/processor status
- - API add 'MHS %ds' to 'summary'
- - Icarus remove unneeded opt_debug tests due to applog being a macro
- - We should only yield once in cg_wunlock
- - Provide a function to downgrade a cglock from a write lock to an intermediate
- variant.
- - Reset quotas on load balance for all pools at the same time to avoid running
- out during selection and unintentionally dropping to fallback.
- - Break out of select pool from a common point for appropriate debug messages
- and to avoid further tests.
- - Find the greatest common denominator in quotas and use the smallest number of
- consecutive work items per pool in quota load balance mode to smooth hashrate
- across pools with large quotas. Give excess quota to priority pool 0 instead of
- pool 0.
- - Add subdir-objects to automake options.
- - Use the --failover-only flag to have special meaning in combination with
- load-balance mode to distribute any unused quota back to pool 0 to maintain
- ratios amongst other pools.
- - Display quota and allow it to be modified via the pool menu.
- - More README about quotas.
- - Document quotas and new load-balance strategy.
- - Add API commands and modify output to support pool quota displaying and
- changing.
- - Change message in status when using a balanced pool strategy to notify if
- there's a stratum pool as well.
- - Add quota support to configuration files.
- - Rotate pools on all failures to set a pool in select_pool.
- - Use quotas for load-balance pool strategy.
- - Provide a mechanism for setting a pool quota to be used by load-balance.
- - Change --socks-proxy option to default to SOCKS5
- - Cope with trailing slashes in stratum urls.
- - Make extract_sockaddr set variables passed to it rather than pool struct
- members.
- - miner.php sort the mcast rigs so they are always in the same relative order
- - miner.php allow sending the muticast message multiple times
- - miner.php mcast ignore duplicate replies
- - miner.php coding warning
- - miner.php disable 'gen' by default
- - miner.php allow formula generation of new fields
- - miner.php add doctype
- - miner.php remove incorrect echo
- - miner.php optional error if not enough mcast rigs are found
- - take_queued_work_bymidstate should use a write lock.
- - API mcast add a description option with miner.php
- - Skip dissecting opt->names in parse_config if it doesn't exist.
- - ICA optional limit timing with short=N or long=N
- - logging - applogsiz() for large messages
- - Provide a funcion that looks up queued work by midstate and then removes it
- from the device hash database.
- - Wait until all pools are done testing before giving up, regardless of how long
- they take to fail
- - AUTHORS: Add Ricardo Iván Vieitez Parra and Paul Wouters
- - Bugfix: Check that setgid succeeds
- - When using --chroot, chdir to the new root
- - Bugfix: Add missing drivers to --help list
- - Bugfix: Zero stats: cgpu->diff_stale
- - fpgautils: serial_close: Explicitly release advisory lock before closing, in
- case fd has been inherited by a process forked by system()
- - Use serial_close to pair with every serial_open
- - Workaround bug in Plibc by resetting locale to "C" at startup
- - Bugfix: bitfury: Check for necessity of linux/i2c.h so build succeeds with
- i2c-tools's userspace linux/i2c-dev.h
- - bitforce: Workaround bugs in current firmware for the Chili
- - Bugfix: DevAPI: Reduce race-collision delay to 1ms so thread_shutdown actually
- gets called before threads are killed forcefully
- - Bugfix: configure: Use AC_SYS_LARGEFILE to ensure nonce/share log files can
- safely grow bigger than 2 GB
- - Bugfix: Correct argument type for --submit-threads option
- - littlefury: Workaround Xcode bug initialising fields in anonymous unions
- - Bugfix: write_config: Make intensity list writing more readable, and avoid
- extraneous argument in dynamic intensity case
- - DevAPI: Trigger mt_disable_start after init, if a device is disabled before
- minerloop starts
- - icarus: Skip sending new work if entering DEV_RECOVER* modes
- - icarus: When disabling, close device fd and stop sending new work
- - RPC: Use get_api_extra_device_status for full-device status, for devices with
- only a single processor
- BFGMiner Version 3.3.0 - October 11, 2013
- - openwrt: Optional libevent support
- - RPC: Add missing drivers to Device Code
- - bigpic_process_results: Cleanup
- - RPC: Use procs count for device summaries, rather than iterating over linked
- list (which may span multiple devices)
- - Bugfix: Use bfg_waddstr for cg_[mv]wprintw so special characters get
- interpreted properly
- - Bugfix: bitfury: Clear force_reinit flag after reinit
- - Bugfix: Use base unit for zero, and only if all values are zero
- - RPC: Always build pga* and proc* methods
- - Bugfix: icarus: Check for valid fd before all usage
- - Bugfix: Stratum initiate: Clear json var after freeing it, to avoid a
- potential double-free if retry fails before new JSON is parsed
- - Bugfix: Correct --log-file error message
- - Cleanly fall back to other micro- prefix symbols if locale doesn't support the
- preferred one(s)
- - Bugfix: bfg_waddstr: Missing break after selecting degrees symbol
- - Silence warning about (never really) uninitalised variable use in notifystatus
- - RPC: Complete split between devs/pga* and proc* methods
- - RPC: Internal restructuring to support device-wide view
- - RPC: Remove devdetail method, and rework newer devdetails to use its code
- - configure: Advise running ldconfig when detected and probably necessary
- - configure: Simplify final information summary
- - Bugfix: configure: Disable httpsrv/libevent if not available
- - README: Mention free GPU mining dependencies
- - Write config: Avoid writing default temperature settings
- - bitforce: Set default cutoff temperature to 85C for SC-class devices
- - When shutting down, don't wait for mining threads any longer after the 1
- second sleep
- - bitfury: Silence warning about (never possible) uninitialised variable use
- - bigpic: Handle write failures
- - json_rpc_call_completed: Silence incorrect type cast warning
- - icarus: Silence warning about (never really) uninitalised variable use in
- icarus_scanhash
- - fpgautils: Check for fgets error
- - Silence warning about (never really) uninitalised variable use in
- multi_format_unit
- - ft232r: Silence warning about (never really) uninitalised variable use
- - Silence unused result warnings for notifier_{read,wake}
- - Log a warning if --cmd-* returns a non-zero exit code
- - configure: Update bigpic driver dependency on bitfury code
- - metabank: Initialise --temp-cutoff to 50C
- - README.ASIC: Document special care needed for some bitfury-based miners
- - Bugfix: bitfury: Correct results from RPC pgaset
- - bitfury: Move Slot and fasync RPC info to details instead of status
- - bitfury: Include chip fasync in RPC status
- - bfsb: Split up processors among a separate device per board
- - Bugfix: bitfury: Copy rxbufs to stack in case we need to do SPI communication
- in the meantime
- - bfsb: Merge bfsb_detect_chips into bfsb_autodetect (unchanged)
- - bfsb/metabank: Allow pgaset to change osc6_bits and SPI baud rate
- - bitfury: Fix code indentation
- - bitfury: bitfury_init_oldbuf: Optimise during runtime
- - metabank: Remove unused variables
- - bitfury: Send a work with lots of nonces to help cold-started bitfurys fill a
- static buffer
- - Bugfix: configure: Show --enable-bfsb/metabank in help, since they are
- disabled by default
- - metabank: Reduce i2c banking to only when necessary
- - bfsb: Only build spi_bfsb_select_bank if bfsb driver is being compiled
- - bitfury: Reorganize polling to hit chips sequentially, so SPI traffic can be
- minimised
- - bitfury: spi_emit_data: Return address read data will be located at after txrx
- - bitfury: After 8 bad nonces in a sample period, reinit immediately rather than
- waiting for the remaining up-to-0x38
- - bitfury: Reinitialise chips if their active nonce stops changing
- - bitfury: Recalibrate immediately when we know we need it
- - bitfury: Reset chips if more than 8 hw errors are found in a 0x40 result
- sample period
- - bitfury: If previous nonce mismatch persists, try recalibrating oldbuf
- - bfsb: Shutdown chip when disabling
- - bfsb: Expose Clock Bits and Slot to RPC
- - configure: Simplify dynclock necessity detection
- - configure: Tie libudev usage to fpgautils
- - configure: Simplify fpgautils necessity detection
- - DevAPI: add_cgpu_slave for more elegant multi-device threads
- - Use procs count for device summaries, rather than iterating over linked list
- (which may span multiple devices)
- - metabank: Split up processors among a separate device per board
- - metabank: Merge metabank_detect_chips into metabank_autodetect (unchanged)
- - Removed temperature output from metabank_api_extra_device_status().
- - Modified code to store temperature at cgpu->temp for metabank devices.
- - bitfury: Added get_api_extra_device_status for 'devs' request in metabank
- driver: Slot, Clock Bits, Temperature, Voltage.
- - minerloop_async: Run watchdog code within actual device thread
- - bitfury: Remove unused libbitfury_readHashData
- - Bugfix: DevAPI: Don't call job_process_results when there was no previous job
- - bigpic: Convert to async minerloop
- - bitfury: Port to Windows
- - bigpic: Use bitfury_fudge_nonce
- - Use common bitfury_decnonce for all bitfury-based devices
- - Rename bf1 driver to bigpic, as the same device has other brands too
- - bf1: Clean up log messages
- - bf1: Reduce loglevel of debug messages
- - Bugfix: bf1: Add missing header to Makefile.am, and fix .dname/.name
- - Bugfix: bf1: Fix warnings
- - BF1 driver modified to work under Windows -> packing of structs isn't working
- with Windows
- - Corrected hash rate estimation for BF1. Only 756 out of 1024 nonces are
- scanned.
- - Cleaning up the bf1 driver code
- - BF1 driver working
- - Bitfury BF1 source files added
- - bfsb: modified to use LukeJr:'s new code
- - configure: Reorder output
- - configure: Allow to build *fury drivers only
- - bitfury: Turn commented debug stuff into #ifdef BITFURY_SENDHASHDATA_DEBUG
- - bitfury: Implement queue_full to ensure all processors have a work ready
- before scanwork
- - bfsb: set api speed to 625khz
- - initial support for bitfurystrikesback boards
- - bitfury: LINE_LEN instead of 2048
- - bitfury: 4Mhz SPI by default
- - bitfury: double SPI polling
- - bitfury: +Strange Counter -printf Counter
- - bitfury: tuning of parameters; fixed cycles calculation
- - bitfury: Move clock increase from common code to metabank driver init
- - bitfury: Add driver-bitfury.h for shared function declarations
- - bitfury: Do debug logging of read data before rotation
- - bitfury: Decode nonce array sooner to make debugging easier
- - bitfury: Check that the previous nonce still matches, to detect response
- corruption
- - bitfury: Workaround corruption by looking for matches rather than changes
- - bitfury: Rewrite using async minerloop (currently only setup on metabank
- driver)
- - bitfury: Fix memory issues
- - littlefury: Turn off chips when exiting
- - littlefury: Adapt to 16-bit payload size (protocol change)
- - Bugfix: littlefury: Fix bitfury_do_packet
- - bitfury: Report bad nonces properly
- - bitfury: Unify common nonce fudging code
- - Bugfix: bitfury: Chips only scan 0xbd000000 nonces per work
- - bitfury: Fix logging to use applog
- - bitfury: Split driver into bitfury_gpio (bare GPIO) and metabank (i2c banked
- GPIO)
- - littlefury: Use bitfury driver scanwork
- - bitfury: Eliminate more static variables
- - bitfury: Treat each chip as its own processor
- - bitfury: Resolve devices[chip] only once per chip
- - bitfury: Move second_run logic back to libbitfury
- - bitfury: Loop over chips once during scanwork
- - bitfury: Abstract hashes_done2 which keeps track of time deltas per thr on its
- own
- - littlefury: Need to set tv_morework
- - bitfury: Abstract out payload_to_atrvec
- - littlefury: Log read return value when unexpected
- - bitfury: Eliminate non-const global variables
- - littlefury: Safeguard on job switching
- - Bugfix: littlefury: Keep reading until error, EOF, or buffer filled
- - littlefury: Log devproto of incomplete reads
- - Enable littlefury detection
- - Bugfix: configure: Enable bitfury by default properly
- - bitfury: Require explicit -S bitfury:auto to probe GPIO-based SPI
- - bitfury: Move i2c slot handling to metabank-specific driver code
- - littlefury: Initial driver for BitCentury's USB miner
- - bitfury: Split actual chip detection into simple function
- - Bugfix: bitfury: Fix driver "name" to be correct length
- - bitfury: Abstract SPI interface
- - Bugfix: bitfury: Fix more warnings
- - Bugfix: bitfury: Fix warnings
- - bitfury: Intercept and use applog for perror calls
- - Bugfix: bitfury: Handle SPI init failure cleanly
- - bitfury: major intermediate update
- - bitfury: added chip series detection; multiple chip mining
- - Bitfury ASIC initial support
- - DynClk: Improve commented documentation
- - Replace Utility with (expected) Income calculated by actual shares submitted
- in 100% PPS value
- - format_unit3: BTC formatting with 2 decimal place digits
- - format_unit3: Support for nano- and pico- sizes
- - format_unit3: Use an enum for float-precision parameter
- - format_unit2: Support milli- and micro- unit prefixes
- - opencl: Disable by default if other devices are found; to enable, use -S
- opencl:auto
- - write_config: Save request-diff option
- - Stratum: Clear unused extranonce2 space
- - Don't even show 'Attempting to restart' for devices that don't support it
- - Workaround bug in PDCurses wresize
- - Bugfix: Include config.h in sha2.c first
- - make-release: Include libevent-2-0-5.dll in Windows packages
- - README: Document dependency on libevent
- - README: Document new --chroot-dir and --setuid options
- - Bugfix: Use correct configure define for chroot
- - Remove --disable-chroot build option: always compile --chroot-dir if supported
- - Bugfix: Use correct configure define for pwd.h
- - Improvements on code
- - Update miner.c
- - Added basic chroot support, added option to configure.ac.
- - Updated miner.c
- - Added basic chroot support
- - Replace u-hashrate with nonce-based hashrate adjusted for rejects/stales
- - SSM: Windows port
- - SSM: Allow configuring stratum port via --stratum-port option and RPC
- setconfig
- - SSM: Implement mining.hashes_done extension
- - Proxy: Catch invalid usernames and error
- - SSM: Report hashes done based on share submissions
- - SSM: Include current time in job ids to avoid false hardware errors due to job
- id reuse
- - SSM: If no notify is currently set, try to set it before refusing a subscribe
- - SSM: Prune old jobs after expiry
- - SSM: Use pool data read lock when subdividing notify
- - SSM: Gracefully fail when upstream stratum notify cannot be subdivided
- - SSM: Gracefully fail when upstream pool is not stratum (by closing subscribed
- clients, and refusing to subscribe new ones)
- - SSM: Properly fail cleanly when maximum clients are connected
- - SSM: Clean up stratumsrv_job when pruning it
- - SSM: Avoid responding to notifications, and give an error for unknown methods
- - SSM: Propagate work updates to clients
- - Mostly functional stratum proxy driver
- - Stratum: Split actual work generation away from the current pool data
- - Bugfix: Stratum: Dereference pool swork coinbase buffer inside data lock
- - SGW: Split proxy code out from driver-getwork into driver-proxy
- - Bugfix: miner.php: Check $dototal[$name] is set before comparing its value
- - Bugfix: RPC: Use bad_nonces in Hardware% instead of generic hw_errors
- - Bugfix: RPC: Handle LIFE_DEAD2 case
- - Make failure to open sharelog or noncelog abort startup
- - Nonce logging option --noncelog to simply store every nonce and its info
- - Abstract --sharelog option parsing
- BFGMiner Version 3.2.1 - September 19, 2013
- - Only show long-poll message in pool summary if it's not using stratum.
- - README.ASIC: Clarify syntax of --scan-serial usage for USB Erupters
- - Bugfix: RPC: Defer allocation of apisock until after we check for --api-listen
- - make-release: Only try to include libmicrohttpd if bfgminer.exe depends on it
- - Bugfix: make-release: Include libplibc-1.dll if available
- - SGW: For Windows builds, include winsock2.h instead of POSIX networking
- headers
- - configure: Display getwork proxy server support in summary
- - Bugfix: SGW: Pass actual cgpu_info to prune_worklog_thread instead of silently
- casting one from getwork_client
- - Bugfix: Get total_staged with lock for TS stat, before getting console lock
- - Bugfix: bitforce: Correct fanmode RPC help
- - bitforce: Hide fan control when disabled in firmware
- - Bugfix: bitforce: Correct fanspeed TUI setting
- - Bugfix: logging: Allow up to 4 KB for log lines
- - Bugfix: icarus: Ensure last2_work exists before trying to check nonces fit it
- - README.OpenWrt: Include serialusb drivers
- - README: Include OpenWrt serialusb driver package names
- - Bugfix: Initialise notifier (as invalid) for no-thread devices (SGW)
- - Bugfix: Free temporary kernel path copy when writing config file
- - Bugfix: Put kernel path on the (main) stack after initialisation from
- commandline/config, to avoid appending an argv or jansson string
- - Bugfix: Always allow startup with curses enabled (since the user can use
- Manage devices to add new ones, and display Ctrl-C for text-only quit help
- - Bugfix: Ignore/reject libmicrohttpd before 0.9.5, which introduced symbols we
- need
- - README: Elaborate on format of BW
- - Bugfix: Try to initialise libusb later, so any mutexes applog might need are
- initialised
- - Bugfix: Implicitly initialise timer_set_now when it is first called
- - util: Eliminate unsafe const-removing casts
- - configure: Cleanup CFLAGS/LDFLAGS display
- - Show RT_LIBS in ./configure output.
- BFGMiner Version 3.2.0 - August 29, 2013
- - cpu: sse2_64: Rename sha256_init to sha256_init_sse2 to avoid conflict with
- new sha2.c
- - httpsrv: Some older versions of libmicrohttpd need stdint.h included first
- - make-release: Include libmicrohttpd-10.dll if it exists
- - Fixes column alignment in decimal fields. Workaround for printf rounding up
- when formatting decimals into limited width.
- - New hidden --unittest option. No longer runs unit tests at startup by default,
- for faster startup. Added unit test for width printing of decimal numbers.
- - Bugfix: configure: More fixing BSD sed syntax for curses header search
- - Bugfix: configure: More fixing BSD sed syntax for libusb header search
- - README: Update solo mining docs
- - erupter: Continue searching a job until the end, even if an earlier result is
- found
- - icarus: Do hwerror-triggered reopen before sending the next job the first
- time, to avoid having to resend it later
- - icarus: Avoid sending a new job if the nonce found was for one before the
- current job anyway
- - icarus: Double-buffer work to solve nonces found before work change takes
- effect
- - icarus: Abstract nonce processing
- - Bugfix: icarus: Avoid trying to submit 0 on comms error
- - icarus: Skip unnecessary nonce memcpy
- - icarus: Make state->last_work a pointer and store it on the heap
- - miner.php fix missing global
- - Bugfix: erupter: After identify, skip starting work if next scanhash is
- already decided to be a "first run" (eg, device errors)
- - Bugfix: erupter: Fix identify following hw error
- - Bugfix: icarus: Don't try to send work if device open failed
- - Debug log when zeroing stats
- - Upgrade libblkmaker to 0.3.2
- - Bugfix: GBT: Advertise coinbasevalue capability
- - Bugfix: Always compile add_serial now that it's somewhat generic
- - icarus: Avoid sending a new job if the nonce found was for one before the
- current job anyway
- - icarus: Double-buffer work to solve nonces found before work change takes
- effect
- - icarus: Abstract nonce processing
- - Bugfix: icarus: Avoid trying to submit 0 on comms error
- - icarus: Skip unnecessary nonce memcpy
- - icarus: Make state->last_work a pointer and store it on the heap
- - README.RPC: Remove usbstats mention
- - README: Add FAQ regarding cgminer messing up drivers
- - README.RPC: Fix miner name
- - README.RPC: Correct to mention other supported devices for pgaidentify
- - api.c fix mcast debug message bug
- - README.RPC: break all lines at most 80 characters
- - Update the API Multicast documentation
- - miner.php implement API Multicast handling to automatically find your local
- net miners
- - Bugfix: RPC: Fix log format types in io_flush
- - Set RT_LIBS correctly from autoconf detection
- - Explicitly check for clock_nanosleep and only use it when available
- - Further integrate cgsleep API into BFGMiner's timer system, so clock_nanosleep
- is only used on platforms with CLOCK_MONOTONIC
- - Convert cgtimer_t to struct timeval
- - Bugfix: Fix BSD sed syntax for curses header search
- - Bugfix: configure: Really fix BSD sed syntax for libusb header search
- - README.RPC: Mention multicast detection
- - README: Include --mcast-* options in usage
- - Use ccan's standard char* set/show functions for --api-mcast-{addr,code}
- - Bugfix: RPC: Use the same mcast code in reply, and log it correctly
- - API mcast only reply to remote IP's that are allowed access
- - Initial API Multicast response v0.1 to find cgminer APIs
- - Check for cnx_needed on each loop through wait_lp_current.
- - Return positive for cnx_needed when no_work is true.
- - Add no_work bool to set when we are in an underrun situation
- - Reorder support names alphabetically.
- - We don't want to continue into the hash_pop function if the getq is frozen.
- - Carve out the unused portions of sha2 implementation.
- - Import Aaron D. Gifford's fast sha256 implementation.
- - Use cloned work when finding avalon results since another thread can discard
- the work item while it's in use.
- - Provide a variant of find_work_bymidstate that returns a clone of the found
- work.
- - Use timespecs on windows as cgtimer_t to capitalise on the higher resolution
- clock changes.
- - Abstract out the conversion of system time to an lldiv_t in decimicroseconds.
- - Use our own gettimeofday implementation on windows for it to be consistent
- across ming builds and higher resolution.
- - Provide cgtimer_sub helper functions.
- - Provide cgtimer_to_ms helper functions.
- - Rename cgsleep_prepare_r as cgtimer_time to get time in cgtimer_t format and
- call cgsleep_prepare_r as a macro for cgtimer_time
- - TimeBeginPeriod and TimeEndPeriod do not add significant overhead when run the
- entire time for cgminer so avoid trying to maintain balanced numbers of them for
- specific time calls to simplify code.
- - Replace all references to the old n*sleep functions with the equivalent
- cgsleep_*s replacements.
- - timeGetTime uses huge resources on windows so revert to using timevals for its
- implementation of cgtimer_t
- - Quotient/remainder error in ms division.
- - Provide cgtimer_to_timeval helper functions.
- - Provide a timeval_to_cgtime helper function to reuse values.
- - Simplify cgsleep code for windows by using a typedef for cgtimer_t that
- resolves to clock resolution, using that internally.
- - On windows use the higher accuracy timegettime function to really get 1ms
- clock and timer accuracy.
- - Fix missed endtimeperiod in overrun timer on windows.
- - Make cgsleep_us_r take an int64_t for us.
- - Make the cgsleep functions build on windows.
- - Set high resolution timing on windows within the cgsleep functions.
- - Provide reentrant versions of cgsleep functions to allow start time to be set
- separately from the beginning of the actual sleep, allowing scheduling delays to
- be counted in the sleep.
- - Make the nmsleep and nusleep functions use the new cgsleep functions internally
- till functions are migrated to the new cgsleep API.
- - Add a ms_to_timespec helper function, and create a cgsleep_ms function that
- uses absolute timers with clock_nanosleep to avoid overruns.
- - Add rt lib linkage to enable use of clock_nanosleep functions with older
- glibc.
- - Add a timeraddspec helper function.
- - Provide a us_to_timespec helper function.
- - Provide a us_to_timeval helper function.
- - Add helper functions to convert timespec to timeval and vice versa.
- - Bugfix: SGW: Discard work from log only by expiry, so post-startup hardware
- errors are truly only hardware errors
- - bitforce: Make voltages available to RPC
- - bitforce: Save voltages as array of longs internally
- - Bugfix: Clear device bad nonces when zeroing stats
- - cpu & opencl: Defer RUNONCE to actual autodetection, so they can be added once
- after startup
- - Bugfix: Avoid crash activating [M]anage devices with no currently defined
- devices
- - TUI: Support for adding new devices using the plus key from [M]anage devices
- - Bugfix: Use add_serial function for scan_serial, so that "all" keyword works
- correctly
- - SGW: Add support for new X-Hashes-Done header to allow devices to more
- accurately report their work
- - SGW: Add X-Mining-Identifier header to inform devices what they are
- represented by in BFGMiner
- - SGW: Use JSON for 401 response; add Server HTTP header
- - AUTHORS: Add contributor Josh Lehan
- - Changed comparison constants to allow for floating-point rounding
- - Install README.ASIC for Block Erupter related drivers as well as Avalon
- - make-release: Windows users don't need README.Debian
- - README.OpenWrt: Import from BFGMiner downloads
- - Silence Windows warning about send data signedness
- - Fix block info
- - API/miner.php add some % fields
- - Don't yield on grabbing the read lock variant of cglocks.
- - util.c expand quit to show file/func/line
- - We should be using a cg_wlock initially in generating stratum work before
- downgrading the lock.
- - Add the ability to downgrade a write variant of the cglocks.
- - Yield after releasing a lock in case we are on a device with limited CPU
- resources.
- - Fix --scrypt being required before scrypt intensities on command line or not
- working at all via config files.
- - Limit intensity range according to whether scrypt is in use or not.
- - Do not allow benchmark mode to be used with scrypt.
- - miner.php format Best Share
- - README.ASIC block erupter USB brief
- - Check for negative wait time in socket_full.
- - Adjust socket wait timeout in recv_line according to how long we've already
- waited to avoid a 60 second wait dropping to 1 second due to a blocked socket.
- - force type checking on curses
- - logging - size check sprintf
- - Only use length-counted variants of format_unit and percentf
- - Implement snprintf-like versions of format_unit and percentf
- - miner - size check all sprintf
- - size check get_datestamp/get_timestamp and remove unused cgpu->init
- - make all statline overflow safe
- - Convert the decay_time function into one that truly creates an exponentially
- decaying average over opt_log_interval.
- - GPU fan rpm display 9999 when it overflows
- - Change mode on python file.
- - Only update hashmeter if we have done hashes or haven't updated longer than
- the log interval, fixing a us/ms error.
- - README.ASIC: Document usage with Block Erupter Blades
- - README: Add mention of libmicrohttpd to dependencies
- - SGW: Include hash1 in work
- - SGW: Include application/json Content-Type header
- - Fix build without libmicrohttpd
- - Allow startup to proceed with no devices, as long as RPC or HTTP are listening
- - SGW: Refuse to issue new work to disabled devices
- - SGW: Respond with stale rejection if share is known to be immediately stale
- - Expose HTTP getwork username in Manage TUI and devdetails RPC
- - Add --cmd-idle notification command for REST/WAIT conditions
- - bfgminer-rpc: Accept unlimited size replies
- - api-example.py: Accept unlimited size replies
- - RPC: Rewrite io_data to cleanly handle unlimited sized responses
- - Configure options to build --without-libmicrohttpd support
- - RPC: setconfig can now change http-port (enabling or disabling the http
- service included)
- - Embedded HTTP server to handle getwork-based mining devices
- - inc_hw_errors2 function can handle a bad nonce without a known work
- - Split up scan_serial function to enable internally adding ad-hoc cgpu
- - Helper functions bfg_json_obj_string and share __json_array_string
- - bytes_t: Add bytes_shift and bytes_nullterminate
- - Fix configure help for --without-sensors
- - README: Document --with-system-libblkmaker
- - Bugfix: Use BSD-friendly sed syntax for libusb header search
- - Bugfix: Handle bitstreams properly
- - Bugfix: Skip search for addwstr since it breaks --with-curses=preference
- - Bugfix: configure: Find correct curses include path without *-config
- - README.FPGA: Further clarify ZTEX setup
- - Display a friendly error directing to README.FPGA when bitstream cannot be
- loaded
- - Remove bitstreams from BFGMiner distribution entirely, and include pointers
- where to find them in README.FPGA
- - ztex: Use load_bitstream_bytes for .bin files
- - fpgautils: load_bitstream_bytes support for Intel HEX format (.ihx) files
- - Add missing 16-bit byteswap macros
- - fpgautils: load_bitstream_bytes function to load a bitstream into a bytes_t
- - bytes_t functions: bytes_init, bytes_append, bytes_reset
- - Look for bitstreams in /usr/share/bitstreams
- - Disable Unicode support by default (use --unicode to enable)
- - make-release: Skip stripping debug info from Windows EXEs, for now
- - Bugfix: Ensure work variable is assigned before checking its thr_id
- - Bugfix: notifier_init (Windows): setsockopt needs an int for SO_REUSEADDR
- - Bugfix: Avoid turning totals red just because a processor is idle
- - Enable notifications for sick/dead with --cmd-sick and --cmd-dead options that
- execute commands when the event occurs
- - RPC: Add cpu enable/disable/restart
- - windows-build: Update to use libpdcursesw.dll
- - Ensure socket error messages are used for socket errors on Windows
- - fpgautils: Attempt to use Linux advisory locks on serial devices
- - Bugfix: README: --temp-cutoff sets the maximum temperature before cutoff, not
- temperature that triggers cutoff
- - Bugfix: Avoid incrementing dev_thermal_cutoff_count when just updating
- timestamp on status
- - Detect curses support for wide characters during configure
- - configure: Check for more variants of curses library names
- - Bugfix: ztex: Avoid trying to format non-libusb error with libusb error name
- - Bugfix: Avoid trying to assign const use_unicode variable with --no-unicode
- option
- - Remove long-unused opt_time variable
- - RPC: Avoid exposing Coinbase-Sig when it isn't supported
- - Bugfix: Fix build with libblkmaker < 0.2
- - Attempt stratum mining.suggest_target before mining.subscribe, if
- --request-diff is used
- - Retry stratum if initiation fails for any reason after we have sent something
- (assuming there is more older variants we can try)
- - Bugfix: Restore delay for authorization on stratum mining.get_transactions
- - Bugfix: Fix TUI-only build
- - bitforce: Extend pgaset _cmd to variable-length commands
- - Bugfix: Use red for total processor count
- - bitforce: Undocumented _cmd1 pgaset for experimenting with firmware
- - Bugfix: curses: use_default_colors() when possible
- - Bugfix: Calculate scrolling range with new cursor lines
- - Bugfix: Ensure use_unicode and have_unicode_degrees constants are defined for
- curses-less builds
- - Bugfix: Replace block_timeval with (time_t) block_time
- - README: Update for --no-unicode option
- BFGMiner Version 3.1.4 - August 2, 2013
- - Windows: Rebuild pdcurses with UTF-8 and wide character support
- - Bugfix: Avoid using wide curses symbols/macros when USE_UNICODE is not defined
- - Unicode: Use line drawing in TUI Help
- - Use bfg_waddstr even with Unicode disabled, since it's needed for red
- highlight
- - Colour bad conditions in red
- - Unicode: Cross-tee intersecting lines
- - Unicode: Use WACS_VLINE for vertical lines
- - Unicode: If degrees symbol is available, add it to temperatures
- - Unicode: bfg_waddstr wrapper to handle non-ASCII characters, currently used
- only by logging and statlines
- - Unicode: Use WACS_HLINE for horizontal lines
- - Add framework for using Unicode in TUI (can be disabled with --no-unicode)
- - Avoid using potentially locale-dependent ctype functions in locale-independent
- contexts
- - Refactor temperature in TUI statlines to share code nicer
- - Bugfix: avalon: Fix applog formatting
- - Bugfix: Align totals columns in per-processor view
- - Bugfix: Fix curses-less build
- - configure: Workaround buggy autoconf versions
- - Bugfix: erupter: Include headers in order necessary for Windows
- - Bugfix: Reimplement get_intrange using strtol instead of sscanf (which is
- broken on Windows)
- - Bugfix: get_intrange: Check for extra garbage at the end, only after we know
- we have an end-position
- - Bugfix: Fix Enter key in TUI on Windows
- - erupter: Split identify-handling logic into handle_identify function
- - Bugfix: erupter: Ensure identify is handled during no-once or firstrun
- - erupter: After identify, check if a work restart is needed immediately
- - erupter: Implement identify function by pausing hashing for 3 seconds
- - Bugfix: icarus: Remember firstrun state in case it gets changed for the next
- run
- - icarus: Move actual dynclock updates to icarus_job_start
- - icarus: Split out icarus_job_prepare, and rename icarus_job_start
- - Bugfix: ZeroStats: Reset column widths to 1
- - miner.php: Include max temperature in device totals line
- - Bugfix: Stratum Fix debug logging of initial mining.subscribe command
- - Bugfix: Call pool_set_opaque from work_decode, so block content hiding/
- providing messages work for getwork/GBT
- - Split block contents hiding/providing notices out from stratum code
- - Add test suite for get_intrange
- - Bugfix: Check for error conditions in get_intrange to not have weird --device
- behaviour when bad values are provided
- - Bugfix: erupter: Take advantage of detectone_meta_info to handle Emerald
- autodetection
- - TUI Help describing the various status fields (contributed by midnightmagic)
- - Bugfix: ManageTUI: Allow 'I' key to be used by devices not supporting identify
- - Bugfix: Prefer Sapphire over Emerald for -S erupter:*
- - Bugfix: Clear total_bad_nonces when zeroing statistics
- - Bugfix: modminer: Since we are not searching iManuf string for needles, only
- look for "ModMiner"
- - Bugfix: sysfs autodetect: Recurse into tty/ subdirectory (necessary for
- CDC/ACM ttys)
- - sysfs autodetect: Split tty* directory search into new _sysfs_find_tty
- function
- - modminer: Reduce default clock to 190 MHz
- - README: Update driver info to include Erupter driver
- - README: FAQ about scrypt and difficulty
- - Include count of working devices/processors in totals statline
- - Format totals statline the same way as individual device/processor statlines
- - Rearrange TUI a bit, including menu at the top (+1 log line) and hashrate
- total closer to device summaries
- - Bugfix: setup_stratum_curl: Need to release stratum lock on connection failure
- too
- - Bugfix: Avoid unnecessary locks inside curses_print_status, which is called
- with the console lock held
- - Bugfix: setup_stratum_curl: Hold stratum lock until connection completes, to
- avoid potential races
- - Bugfix: stratum_works: If stratum is already active, it works (avoid trying to
- initialise it again)
- - Replace hashrate_to_bufstr/ti_hashrate_bufstr with format_unit/
- multi_format_unit_array
- - New multi_format_unit_array to fill multiple buffers instead of building a
- delimited string
- - multi_format_unit: Skip recounting length of fixed-length strings
- - Shrink status line to fit in 80 columns
- - Add network bandwidth rate to TUI
- - New multi_format_unit variadic macro to handle formatting multiple numbers at
- once
- - format_unit: Option to choose 3-digit integer display vs 5-character floating-
- point display
- - Optimization: format_unit: Handle number first, to avoid having to restore
- suffix later
- - Generalise hashrate_pick_unit/hashrate_to_bufstr into pick_unit/format_unit
- - Extend hashrate_pick_unit/hashrate_to_bufstr to handle sub-kilo units
- - Split total_bytes_xfer to total_bytes_rcvd and total_bytes_sent
- - Bugfix: _decode_udev_enc_dup: Allocate enough space for full string
- - Bugfix: Never use waddstr for logwin, since it would bypass special newline
- handling
- - Bugfix: bitforce: Set kname on chip processors
- - bitforce: Include voltages in Manage device TUI
- - Defer newlines going to curses logwin, to avoid a useless blank line at the
- bottom of the window
- - Ensure printing to logwin always goes through _wlog
- - Remove blank line above log window
- - bitforce: Identify parallel queue protocol distinctly from mere bulk queue
- - ManageTUI: Include kernel name, when available
- - Stratum: Roll ntime as we generate work
- - Stratum: Make swork.ntime native-endian
- - Stratum: Treat ntime as uint32_t (as it should be), still always big endian
- - Debuglog ManageTUI actions/responses
- - ManageTUI: Add generic Identify support
- - Bugfix: Move serial_detect* and open_bitstream to DevAPI code so CPU/OpenCL
- can build properly without fpgautils
- - Short-circuit logging sooner in quiet mode
- - Write to both stderr and console within same console lock "session"
- - Bugfix: Also hold the console lock when writing to stderr
- - Use common console locking function for stdout in logging.c
- - Move console lock and unlock functions (which also handle thread cancelstate)
- to miner.h
- - Bugfix: bitforce: Only try to clear queues of SC devices, since FPGA MR boards
- interpret ZQX/ZOX differently
- - Timer-based gettimeofday substitute for systems with poor time-of-day clocks
- (Windows)
- - Use clock_gettime(CLOCK_MONOTONIC) for timers when available
- - Use QueryPerformanceCounter for timers on Windows
- - Generic refactoring for timer_set_now
- - Replace all remaining uses of gettimeofday for timers, with timer_set_now (aka
- cgtime)
- - Don't mix timers with timestamps (visual only)
- - Always use struct timeval for timers, and don't mix timers with timestamps
- (functional only)
- - get_datestamp: Change timeval parameter to time_t, and implement
- get_now_datestamp for common "current time" use case
- - Use get_datestamp for (non-microsecond) log timestamps
- - Bugfix: ztex: Allocate final processor names on the heap, so they survive when
- the stack for ztex_prepare is gone
- - Bugfix: ztex: Copy serial number to device "name" before cloning it for other
- processors
- - Bugfix: x6500: Use cgpu->temp directly since there is only one sensor per
- processor
- - Bugfix: Actually show the highest temperature, not just calculate it
- - x6500: Allow changing clock speed from TUI Manage device
- - x6500: Port pgaset clock from modminer driver at
- 66d2a3ab072fcdbc3c7ed41a97f265afa917bbee
- - modminer: Allow changing clock speed from TUI Manage device
- - bitforce: Flush job and result queues at startup to avoid unnecessary warnings
- - x6500: Reduce default clock to 190 MHz
- - Bugfix: fpgautils: Close libusb handle after copying USB strings
- - use BSD sed syntax to generate iospeed_local.h
- BFGMiner Version 3.1.3 - July 11, 2013
- - Bugfix: Reset staged_full flag when discarding (stale) popped work, or
- increasing the queue minimum
- - Bugfix: Only trigger staged work underrun if a mining thread was actually
- waiting for it (and do so sooner, before it has the work made)
- - bytes_cpy: avoid malloc and memcpy when size is zero
- - fix infinite loop in bytes_cpy when size is zero
- - Bugfix: Generate iospeeds_local.h based on termios.h defines, and only try to
- use POSIX standard if that fails
- BFGMiner Version 3.1.2 - July 8, 2013
- - When not compiling with optimizations, initialize unused nonce2 space to avoid
- warnings from memory checking tools
- - TUI Manage devices: Support PgUp/PgDn keys to skip over processors within the
- same device
- - Bugfix: bitforce: Prefer 2nd temperature if higher than 1st
- - When displaying device summary statlines, use the highest temperature reported
- by any processor
- - Stratum: Fix nonce2 sizes greater than 4 and (on big-endian) smaller than 4
- - bitforce: Manage TUI: Display both temperatures (if two), and enable changing
- fan speed
- - opencl: Add fan speed to Manage device TUI now that it's been removed from
- statline
- - DevAPI: Remove old statline APIs entirely, and add new override_statline_temp
- (used by modminer/x6500 for upload %)
- - README: Update statlines
- - TUI: Replace DevAPI statline_before with a predefined temperature column to
- free up statline space
- - Refactor and simplify bin2hex to speed up and avoid unnecessary heap use
- - stratum: Refactor work generation to do hex2bin conversions once, rather than
- every single header generated
- - Implement bytes_t for generic binary data storage (including smart realloc-
- based resize)
- - Bugfix: fpgautils: Only try to change baud rate when requested
- - x6500: Provide manuf/product/serial to cgpu interface
- - ztex: Provide manuf/product/serial to cgpu interface
- - erupter: Use baud 115200 by default
- - List valid baud rates once in iospeeds.h and standardize conversions
- - TUI: Display device manufacturer/product/serial in Manage device screen, when
- available
- - DevAPI: Store manufacturer/product/serial for each device
- - fpgautils: detectone_meta_info to provide metainformation (manufacturer,
- product, serial) on devices to detectone functions
- - Bugfix: fpgautils: Close product string file from sysfs (autodetect)
- - erupter: New icarus-based driver to handle autodetection of Block Erupter
- devices
- - Add --log-file option which redirects stderr to a file, but valid anywhere in
- the commandline or config file
- - Detect staged work underruns and increase queue to avoid them
- - Rewrite hex2bin to perform much faster (reduces minirig CPU usage by more than
- half!)
- - README: Add condensed list of dependencies
- - Enable "maintainer mode" by default
- - Bugfix: opencl: TUI manage: "Change settings" must not be compiled in with
- no-ADL builds
- - Bugfix: Detect whether the linker accepts -zorigin before attempting to use it
- - opencl: ADL: ADL_Adapter_ID_Get fails with newer drivers, so tolerate its
- failure best we can
- - opencl: Don't try to use BFI_INT patching with APP-SDK newer than 1084
- (Catalyst 13.1), since it doesn't work
- - fpgautils: Elaborate that bitstream open failures are probably due to missing
- bitstream package
- - fpgautils: s/firmware/bitstream/
- - Bugfix: Cleanup handling of complete device/driver failure
- - Deprecate -C (enable CPU) and -G (disable GPU) options, now that -S
- drv:[no]auto can be used for the same purposes
- - Bugfix: Since at least one of unix (or __APPLE__) or WIN32 is required by
- util.h, make sure unix is defined if WIN32 is not
- - Bugfix: Set ELF rpath for bundled libblkmaker to use $ORIGIN so it can be run
- from other directories
- - Bugfix: Cleanup needs to happen before printing the final quit message, or it
- gets lost in TUI mode
- - Bugfix: fpgautils: Initialize my_dev_t instances with null bytes, to ensure
- random unused data cannot influence hash keys
- - opencl: ManageTUI: Clear log cleanly for changing settings
- - Remove "GPU management" TUI entirely
- - opencl: Use new "Manage device" interface to do everything "GPU management"
- used to be used for
- - DevAPI: Add interface for drivers to define custom "Manage device" options
- - DevAPI: New function called to display additional processor information for
- "Manage devices"
- - TUI: Add enable/disable commands to device management
- - TUI: Implement beginnings of generic device management interface
- - Bugfix: avalon: Fix LIFE_INIT2 setting
- - Add LIFE_INIT2 status (safe to call functions, but not mining yet) for devices
- that want to report initialization status in their statline
- - Bugfix: modminer: Only program once for --force-dev-init
- - Bugfix: x6500: Only program once for --force-dev-init
- - fpgautils: Workaround and document Xcode clang bug
- - Bugfix: avalon: Correctly claim serial port
- - Bugfix: -S all: Mac OS X needs to probe /dev/cu.*, not just /dev/cu.usb*
- - cpu & opencl: Refuse to detect more than once
- - cpu & opencl: Respect scan-serial auto/noauto instructions
- - ft232r & libztex: Skip probe of claimed devices
- - fpgautils: Check for devices being claimed before calling detectone from autodetectors
- - x6500 & ztex: Claim USB devices
- - fpgautils: Implement bfg_claim_usb for claiming devices by USB bus number and
- address
- - fpgautils: Replace serial_claim with bfg_claim_serial using a more cleanly
- extensible interface and implementation
- - fpgautils: serial_claim: Include a bus enum in hash key
- - Add serial port claiming logic to avalon, bitforce, and modminer drivers
- - RPC: "devscan" command to probe for new devices
- - New (internal) scan_serial function to probe for new devices at runtime
- - Split out per-cgpu temperature configuration code to load_temp_config_cgpu
- - DevAPI: Modify add_cgpu to use temporary devices_new array, so detection can
- be done without touching live variables
- - Move more cgpu initialization to allocate_cgpu
- - Move devtype default assignment to allocate_cgpu
- - Move cgpu startup routine to new start_cgpu function
- - Move cgpu_info allocation to new allocate_cgpu function
- - Move *.drv_detect calls to a new drv_detect_all function
- - DevAPI: add_cgpu: There is no need to hold mutexes while creating devices
- - Bugfix: cpu: Update device "kernel name" with auto-selected algorithm
- - usbtest: Improve portability to at least 2.7 and 3.2
- - usbtest: Avoid messing up the display by escaping weird bytes via repr()
- - usbtest: Skip last 2 optional parameters, since we use the defaults and they
- are not in older versions of pyserial
- - Bugfix: bitforce: ZOX limits results to 16 results per call, so repeat ZOX
- until there are fewer
- - Bugfix: Initialization for bfgtls needs to be done in each thread
- - Bugfix: stratum: Be patient with stratum lines that come in slower than we can
- process them
- - Use bfg_strerror in locations previously just logging raw error numbers
- - Bugfix: stratum: Log WSAGetLastError() for error number on recv failures on
- Windows
- - Use bfg_strerror where it is already needed (for thread-safety)
- - New thread-safe bfg_strerror function to portably stringify error codes
- - Bugfix: bitforce_queue: Initialize buf2 so errors don't cause the work queue
- to flush
- - TUI: Display percentage invalid of found nonces with hw errors
- - Bugfix: modminer & x6500: Increment *->diff1 for all bad nonces
- - percentf2 that takes t as precalculated total
- - Keep track of bad nonces independently from generic hw errors
- - inc_hw_errors: Resolve cgpu outside of mutex
- - Use inc_hw_errors function at every site which increases hw_errors
- BFGMiner Version 3.1.1 - June 22, 2013
- - stratum: Deliver exact socket-error within the debug error message
- - Don't install docs for (compile-time) disabled functionality
- - Bugfix: Handle make dependencies on subdirectory files properly
- - Bugfix: Use EXTRA_*_DEPENDENCIES for Cygwin workaround, to fix program make
- dependencies
- - Support new overclocking speeds for avalon: 325, 350 and 375
- - Bugfix: logging: Since we are inlining snprintf, stdio.h is needed
- - Bugfix: serial_autodetect_ftdi: Debuglog FTDI COM port mappings returned, fix
- type of FT_HANDLE
- - Bugfix: Allow starting non-libusb devices if libusb_init fails
- - Bugfix: Add missing newline to libusb_init failure message
- - Bugfix: opencl: Remove unnecessary casts from rot() macro, which created type
- issues
- - Bugfix: Remove unused variables
- - Suspend stratum connections when we know they've failed and don't try to recv
- data from them once the socket no longer exists.
- - applog/quit fix GPU errors created
- - logging remove extra added <LF>
- - remove varargs from logging/quit/in general as much as possible
- - compile unix code on Mac OS X fixes not finding the config file in $HOME
- - Create a pool_localgen bool function for testing when a pool can generate work
- locally.
- - Use mining start time for device MH/U calculations
- - Bugfix: Save start time for stats to correct "Elapsed" key on "stats" RPC
- request
- - modminer: tidy up free in device detect function
- - bitforce: RPC pgaset fanmode 9 for auto fan control
- - Bugfix: usbtest: Correct obvious typos
- - Initial import of usbtest.py script
- - Include microseconds in log output with new --log-microseconds option
- - bitforce: Workaround chip ids not necessarily being in order by choosing
- processor count based on expected chip ids rather than parallelization
- - serial_autodetect_ftdi: Debuglog FTDI COM port mappings returned
- - Bugfix: On stratum disconnect, clear stratum_active and stratum_notify
- atomically along with sock
- - Windows: Use backtrace.dll to print usable backtraces to stderr on crash
- - Bugfix: bitforce: parallelized: Properly handle parallelized protocol with
- only 1 chip
- - Bugfix: bitforce: XLINK: Increment boardno when moving on to the next board
- - bitforce: XLINK: Update to use actual length,xlinkid header order
- - Bugfix: bitforce: XLINK: Avoid trying to send 0 bytes after each write
- - Bugfix: opencl: Build fpgautils even if OpenCL is the only driver, now that it
- uses it for kernel-finding
- - Bugfix: Do not try to call get_stats or get_statline* if device is still
- initializing
- - Bugfix: opencl: Add missing include for fpgautils.h (needed for
- open_bitstream)
- BFGMiner Version 3.1.0 - June 13, 2013
- - Bugfix: openwrt: Expect fixed bitstream path for input
- - Improve Makefile organization and fix "make install"
- - icarus: Upgrade work division autodetection probe to be faster and also detect
- 8 core
- - Calculate rejection percentage based on weighed shares, not absolute counts
- - Count weighed discarded (stale) shares per cgpu
- - Bugfix: Cleanly count discarded (stale) shares without overlapping
- devices/sshare locks within clear_stratum_shares
- - configure: Enable Avalon support by default now that it behaves reasonably
- - avalon: Since detection is not really implemented, only probe devices when the
- driver is specified to -S by name (eg, "avalon:/dev/ttyUSB0")
- - Bugfix: bitforce_queue: Never try to reinitialize a slave processor
- - Bugfix: bitforce_queue: Use work_list_del everywhere we remove from work_list
- to ensure work gets freed properly when done
- - Reduce HW error logging to debug level, so it doesn't clutter the TUI log by
- default
- - DevAPI: When a device has more than 26 processors, represent them as aa-zz
- - bitforce: bitforce: Fix TUI display of slave processors on parallelized boards
- - bitforce: Only display temperature in TUI for the first chip on parallelized
- boards
- - Bugfix: bitforce: Set temperature for all processors on the board
- - Bugfix: bitforce_queue: Initialize proc->device_data to board data for
- parallelized chip processors
- - Bugfix: bitforce_queue: Defer nonce count check until after thiswork has been
- identified (or handled as NULL)
- - avalon: avalon_clear_readbuf can simply wait for a single read timeout on
- Windows to avoid select
- - avalon: Simplify avalon_get_result by using avalon_gets
- - avalon: Go back to good old serial timeouts for gets, since select() is for
- sockets (only, on Windows)
- - Updated api.c to return the hashrate with 3 decimal places
- - Change hashrate display to never display 3 fractional digits, because it looks
- a bit ugly
- - bitforce: Credit hashrate to the correct chip on parallelized devices
- - Re-set work thr_id on share submissions, to ensure the result gets credited to
- the correct device in case of shared job queues (as in BitForce long boards)
- - bitforce: Turn parallelization into separate logical processors for more
- details on each, including working with XLink
- - bitforce_queue: Implement job sanity checks using new "ZqX" for devices using
- parallelization
- - bitforce_queue: Minimal support for parallelization
- - Add --device-protocol-dump option to debuglog low-level bitforce protocol
- details
- - When shutting down, set work restart flag (and trigger notifier) to help
- mining threads escape to their main minerloop (and check for shutdown)
- - Document and check for uthash version 1.9.2+
- - Bugfix: Don't report failure for graceful mining thread shutdown
- - Name devices in mining thread failures
- - Warn about killing mining threads
- - Bugfix: Wake up mining threads when asking them to shutdown
- - Disable pthread cancel within curses locking
- - Shorten the avalon statline to fit in the curses interface and show the lowest
- speed fan cooling the asic devices.
- - Change switch_compact function name to switch_logsize to be used for other
- changes.
- - Only adjust cursor positions with curses locked.
- - devs display - fix GPU duplicate bug
- - basic copyright statement in API.java
- - Change the --device parameter parsing and configuration to accept ranges and
- comma separated values.
- - Modify scrypt kernel message.
- - Check for pool_disabled in wait_lp_current
- - Check for pool enabled in cnx_needed.
- - Add README.ASIC to debian packaging and make-release
- - Document avalon options in ASIC-README
- - Create README.ASIC with basic summary of supported ASIC devices.
- - Do avalon driver detection last as it will try to claim any similar device and
- they are not reliably detected.
- - Set the fanspeed to the nominal chosen for GPUs.
- - Clamp initial GPU fanspeed to within user specified range.
- - Avalon fan factor is already multiplied into the info values.
- - Get rid of zeros which corrupt display.
- - Logic fail on minimum fanspeed reporting.
- - Provide a workaround for fan0 sensor not being used on avalon and pad fan RPM
- with zeros.
- - Add ambient temp and lowest fan RPM information to avalon statline.
- - Display max temperature and fanspeed data for avalon.
- - Set devices to disabled after they exit the hashing loops to prevent the
- watchdog thread from trying to act on them.
- - Scanhash functions perform driver shutdown so don't repeat it.
- - Change the opencl shutdown sequence.
- - Send the shutdown message to threads and do the thread shutdown functions
- before more forcefully sending pthread_cancel to threads.
- - Icarus report data direction with comms errors
- - Execute driver shutdown sequence during kill_work.
- - Provide an nusleep equivalent function to nmsleep.
- - Set avalon_info to device data void struct.
- - Make submit_nonce return a bool for whether it's a valid share or not.
- - Do a non-blocking read of anything in the avalon buffer after opening the
- device.
- - Assign the avalon info data to the device_data in cgpu_info.
- - Rename cgpu_data to use new device_data
- - miner.h remove unused device_file and add device_data
- - Must unlock curses as well in logwin_update.
- - icarus report usb write error information
- - Make mining threads report out during work submission.
- - submit_work_async is no longer used directly by driver code.
- - Create a logwin_update function which mandatorily updates the logwin and use
- it when input is expected to prevent display refresh delays.
- - All stratum calls to recv_line are serialised from the one place so there is
- no need to use locking around recv().
- - Only allow the mining thread to be cancelled when it is not within driver
- code, making for cleaner shutdown and allowing us to pthread_join the miner
- threads on kill_work().
- - Implement pthread_testcancel replacement for BIONIC
- - Attribute whatever stats we can get on untracked stratum shares based on
- current pool diff.
- - Downgrade OpenCL headers to 1.0, which work fine for our purposes and are more
- compatible
- - icarus: If work_division autodetect fails, just use the old default of 2
- - avalonhost-raminst script to help with installing to RAM on Avalon-host
- routers
- - Attempt to probe /dev/cu.usb* for fallback "-S all"
- - openwrt: Download uthash dependency
- - Bugfix: openwrt: Always build with libsensors support disabled
- - configure: Check for uthash headers
- - Bugfix: ztex: Only destroy libztex device after the last handle to it has been
- released
- - ztex: Remove libztex slave device interface, simply passing fpgaNum to
- selectFpga
- - Bugfix: cpu: Fix yasm and sse2 detection
- - cpu: Check for SSE2 support independently from yasm
- - Bugfix: cpu: Make sure to link libsse2cpuminer.a before x86_32/libx8632.a
- - Bugfix: cpu: Only build libsse2cpuminer iff yasm is available and targetting
- x86_32
- - Bugfix: Free work only after deleting it from list
- - Remove embedded uthash.h and utlist.h from Makefile
- - windows-build.txt: Update for system uthash
- - Remove embedded uthash (and add dependency on system uthash)
- - Replace elist.h with utlist.h
- - Bugfix: Fix build with CPU mining and *without* yasm
- - cpu: Be explicit about size of sha256_init address
- - cpu: Add --algo fastauto (new default) to detect a usable algorithm without
- taking over a minute
- - cpu: Default to --algo auto
- - cpu: Support all platform-applicable assembly algorithms, even if used CFLAGS
- don't support them
- - Ubuntu: Updated changelog, added scrypt support.
- - cpu: Set fixed symbol names for stuff shared with assembly
- - cpu: Create Mach-O asm binaries on Darwin-based systems
- - Bugfix: cpu: Use COFF yasm binfmt on Cygwin
- - Bugfix: cpu: Get correct nonce from data, where the CPU sub-drivers leave it
- - Remove redundant "Reject ratio" in exit-time summary
- - Apply "R+S(%)" formatting to long-form statistics
- - Group stale shares in with rejects (but still distinctly counted) and make the
- percentage be (reject+stale)/total
- - Include rejected shares as a percentage
- - Move Utility and Best Share to status line
- - Remove LW from status line, since it is basically useless
- - ztex: Clean up a lot of ugly casting
- - Bugfix: Correctly avoid SIGPIPE on Mac
- - Make set_work_target a function to set a specified char as target for use
- elsewhere.
- - Minor typo.
- - Support more shares to be returned for scrypt mining.
- - Set all stratum sockets to nonblocking to avoid trying to use MSG_DONTWAIT on
- windows.
- - Only use MSG_NOSIGNAL for !win32 since it doesn't exist on windows.
- - Use MSG_NOSIGNAL on stratum send()
- - Set TCP_NODELAY for !linux for raw sockets.
- - Use TCP_NODELAY with raw sockets if !opt_delaynet
- - Recheck select succeeds on EWOULDBLOCK for stratum.
- - Don't use TCP_NODELAY if opt_delaynet is enabled with stratum.
- - Fix warnings in avalon driver.
- - correct applog typing
- - Simplify the many lines passed as API data in the avalon driver now that the
- API does not need persistent storage for the name.
- - Duplicate the name string always in api_add_data_full to not need persistent
- storage for names passed to it.
- - Add extra matching work count data in API for Avalon with 4 modules.
- - Clean up summary slightly better on exit.
- - opencl: Disable using binary kernels on Apple by default
- - Use sock_blocks in api.c
- - Fix build and distdir.
- - compile on win32
- - Update README.scrypt with improved hashrates for 7970.
- - Use copy_time helper throughout miner.c
- - Provide wrappers for commonly used timer routines with API stats.
- - Use flip32 function instead of open coding it in gen_stratum_work.
- - Move util.c exports to util.h
- - Replace gettimeofday usage with cgtime
- - Adopt gettimeofday wrapper from cgminer (cgtime) that is always called with tz
- set to NULL and increases the resolution on windows.
- - Add high resolution to nmsleep wrapper on windows.
- - Bugfix: Export stats_lock for deviceapi
- - Set default ocl work size for scrypt to 256.
- - fliter out the wrong result from adjust fan code
- - Set last device valid work on adding device.
- - Make scrypt submission use the submit_nonce code, with nonces matching
- endianness.
- - Increment hardware error count from the one site.
- - compile avalon driver on win32 and win64
- - build out of source dir
- - Rename scrypt regenhash function for consistency.
- - Add Mac FAQ.
- - Further driver FAQs.
- - Check for work restart after disable in the hash queued work loop since it may
- be a long time before we re-enable a device.
- - Unconditionally test for many wrong results on avalon and reset to avoid
- passing a corrupt avalon result to temperature code.
- - Only reset an avalon device with no results when there are no results
- consecutively.
- - More FAQs.
- - Avoid applog in recalloc_sock.
- - Avoid applog under cg_wlock.
- - Put spacing around locking code for clarity.
- - Avoid applog under pool_lock.
- - Avoid more recursive locks.
- - Avoid applog while ch_lock is held.
- - Avoid recursive locks in fill_queue.
- - Variable is already initialised in global scope.
- - More GPU FAQs.
- - More README faqs.
- - Yet more README faqs.
- - Add more FAQs to README.
- - Wrap result wrong tests in avalon scanhash in unlikely() and only consider a
- hash count of zero wrong if a restart wasn't issued.
- - avalon: if result_wrong >= get_work_count jump out the read loop
- - Fix warning on 32bit.
- - fix the fan control on max temp2/3
- - for some reason network down. one simple bfgminer command: "bfgminer -o
- 127.0.0.1:8888 -O fa:ke --avalon-options 115200:32:10:50:256" can idle the
- avalon for safe power and protect chip
- - if hash_count == 0; reinit avalon, fix the 0MHS bug use the max value of temp1
- and temp2 for fan control
- - Reinstate the matching_work_count per subdevice on avalon based on the work
- subid.
- - Rationalise and simplify the share diff and block solve detection to a common
- site.
- - subid field for devices that do not yet support the distinct device/processor
- interface
- - Make the avalon array size a macro.
- - Use replacement of work items in the avalon buffer as needed instead of
- flushing them.
- - Reinstate wrong work count to reset avalon regardless and display number of
- wrong results.
- - select() on serial usb in avalon does not work properly with zero timeout.
- - Use no timeout on further reads in avalon_gets
- - Do sequential reads in avalon_get_reset to cope with partial reads.
- - Show read discrepancy in avalon_get_reset.
- - Reuse avalon_get_work_count variable.
- - Check for AVA_GETS_RESTART when deciding if avalon has messed up.
- - Make the detection of all wrong results on avalon much more conservative to
- avoid false positives on work restarts.
- - Show error codes on select and read fail in avalon.
- - If we get a restart message in avalon_gets still check if there's a receive
- message to parse first without a timeout before returning AVA_GETS_RESTART.
- - avalon_gets is always called from the one call site so inline it.
- - The read_count is unused by the avalon get result code and no longer required
- for avalon reset so simplify code removing it.
- - Use a separate avalon_get_reset function for resetting avalon instead of using
- avalon_get_result.
- - The current hash count returned by avalon scanhash is just an obfuscated
- utility counter so make it explicit.
- - Check for a restart before a timeout in message parsing code in avalon.
- - We should check for a restart message before checking for a timeout in avalon
- scanhash.
- - Store the subid for the work item in avalon.
- - Fix record_temp_fan function in avalon driver.
- - Remove inappropriate memset of struct avalon result which was corrupting fan
- values.
- - Only do_avalon_close once on multiple errors.
- - Reset the result_wrong count on block change in avalon scanhash to prevent
- false positives for all nonces failed.
- - Small timeouts on select() instead of instant timeout increase reliability of
- socket reads and writes.
- - Rotate the avalon work array and free work on AVA_SEND_BUFFER_EMPTY as well.
- - Only get extra work in fill_queue if we don't have any unqueued work in the
- list.
- - Don't get any work if our queue is already full in avalon_fill.
- - Free avalon->works in the event we call avalon_prepare on failure to
- initialise.
- - Fix warnings.
- - Create an array of 4 lots of work for avalon and cycle through them.
- - Remove unused per unit matching work count for avalon.
- - Rename the confusing avalon_info pointer.
- - Simplify avalon scanhash code using the new find_queued_work_bymidstate
- function.
- - Members of cgpu_info for avalon are not meant to be in the union.
- - Use correct struct device_drv for avalon_drv.
- - Check enough work is queued before queueing more in avalon_fill.
- - Actually put the work in the avalon queue.
- - Rename avalon_api to avalon_drv.
- - First draft of port of avalon driver to new cgminer queued infrastructure.
- - Minor README updates.
- - README.GPU: Properly warn about overclocking damage
- - Add example 7970 tuning for scrypt in readme.
- - Update driver recommendations.
- - Add extensive GPU FAQs for the flood of new Scrypt miners.
- - Bugfix: Expect bitstreams and kernels to be in the srcdir, not build dir
- - cpu: Prefer sse4_64 algorithm if supported
- - cpu: sse2_32: Force bare symbols for cross-asm/C symbols
- - Compile CPU mining for win32 and win64
- - configure: Check for pthread in -lwinpthread
- - Use has_pth flag instead of trying to mess with pthread internals
- - configure: Explicitly check for nanosleep
- - configure: Include "no" response in BFG_PTHREAD_FLAG_CHECK
- - miner.h missing extern
- - Update links and recommended SDKs.
- - Bugfix: README.GPU: Fix some typos
- - Update README to match changes to display.
- - Remove increasingly irrelevant discarded work from status lines.
- - Remove increasingly irrelevant GW value from status.
- - README.GPU: Correct terminology
- - Update README about intensity.
- - Bugfix: Restore always autodetecting stratum as non-scrypt
- - icarus: Replace default of 2 work_division/fpga_count with autodetection of 1,
- 2, or 4
- - Update scrypt readme with newer information and to match changes in code.
- - Set default GPU threads to 1 for scrypt.
- - Connect backup stratum pools if the primary pool cannot deliver work.
- - Use a new algorithm for choosing a thread concurrency when none or no shader
- value is specified for scrypt.
- - Do not round up the bufsize to the maximum allocable with scrypt.
- - Remove the rounding-up of the scrypt padbuffer which was not effectual and
- counter-productive on devices with lots of ram, limiting thread concurrencies
- and intensities.
- - Make pool adding while running asynchronous, using the pool test thread
- functionality.
- - Only curl easy cleanup a stratum curl if it exists.
- - Add intermediate variants of cglocks that can be up or downgraded to read or
- write locks and use them for stratum work generation.
- - Move the stratum data to be protected under a new cg_lock data_lock.
- - Convert the ch_lock to cg_lock.
- - Convert the control_lock to a cg_lock.
- - Remove unused qd_lock.
- - Implement cg_lock write biased rwlocks.
- - Don't start testing any pools with the watchpool thread if any of the test
- threads are still active.
- - Set sockd to false should curl setup fail on stratum.
- - Reopen the socket whenever we're retrying stratum.
- - Set pool died on failed testing to allow idle flag and time to be set.
- - Remove unused pthread_t typedefs from struct pool.
- - Perform pool_resus on all pools that are found alive with the test pool
- threads.
- - Use pool_unworkable in select_balanced as well.
- - Differentiate pool_unusable from pool_unworkable.
- - Keep a connection open on higher priority stratum pools to fail back to them.
- - Set the wrong bool in pool_active
- - Only bypass unusable pools if they're not the selected ones.
- - Find the first usable pool in preference to the current pool in select_pool
- for work.
- - Add a pool_unusable function which checks if a pool is stratum but not active
- to use within switch_pools.
- - API no longer ignore send() status
- - API make the main socket non-static
- - Start the stratum thread only if we successfully init and authorise it,
- otherwise unset the init flag.
- - Make the initialisation of the stratum thread more robust allowing the
- watchpool thread safe access to it after the stratum thread is started.
- - Shorten the time before keepalive probes are sent out and how frequently
- they're sent with stratum curls.
- - Display select return value on select fail in stratum thread.
- - Clear the socket of anything in the receive buffer if we're going to retry
- connecting.
- - Perform pool resus on pools that were not set as the initial pool at startup.
- - Allow pools to be resuscitated on first startup by the watchpool thread.
- - Check all pools simultaneously at startup switching to the first alive one to
- speed up startup.
- - Close any sockets opened if we fail to initiate stratum but have opened the
- socket.
- - API use control_lock when switching pools
- - Clear last pool work on switching pools if the current pool supports local
- work generation or we are in failover only mode.
- - make rw locks: mining_thr_lock and devices_lock
- - work queues - remove new but unnecessary functions
- - functions for handling work queues
- - find_work() to find work in devices work queue
- - Add a get_queued function for devices to use to retrieve work items from the
- queued hashtable.
- - Add the choice of hash loop to the device driver, defaulting to hash_sole_work
- if none is specified.
- - Add a driver specific flush_work for queued devices that may have work items
- already queued to abort working on them on the device and discard them.
- - Flush queued work on a restart from the hash database and discard the work
- structs.
- - Create a central point for removal of work items completed by queued device
- drivers.
- - Create a fill_queue function that creates hashtables of as many work items as
- is required by the device driver till it flags the queue full.
- - Create the hash queued work variant for use with devices that are fast enough
- to require a queue.
- - Make sure to do full avalon_init if the device_fd is invalid.
- - Document extra zero byte in avalon_reset.
- - Microoptimise likely paths in avalon_gets.
- - Make sure to set timeout to 100ms instead of 1ms in avalon read loop for
- select.
- - Make sure to get time of first response in avalon read loop.
- - Use select for a reliable timeout in avalon read and don't read 1 byte at a
- time, optimising read loop.
- - We should break on the loop on a work restart in avalon, and only consider all
- errors if we actually have gotten some results.
- - Avalon init on comms error as well.
- - Reinit avalon device in case of FPGA controller mess up.
- - Increase reliability of avalon startup by only opening and resetting the
- device once, looking for the id sequence offset by one byte as well, and still
- ignoring if it's wrong, assuming it is an avalon.
- - Nest avalon_decode functions to avoid doing unnecessary lookups once we have
- found the nonce.
- - Use htole32 wrapper for nonce encoding in avalon.
- - Remove unused rev8 function from avalon driver.
- - Remove const qualifier from driver structs
- - rename device_api -> device_drv and all related api -> drv
- - rename get_proc_by_id() to get_devices()
- - Wrap access to devices array under a mutex
- - Provide wrappers for grabbing of thr value under the mining_thr_lock.
- - mutex all access to mining_thr
- - Split thr_info array into control_thr and mining_thr pointers so more mining
- threads can be added later
- - Update the hashmeter at most 5 times per second.
- - Speed up watchdog interval and therefore display updates to 2 seconds.
- - Add README.GPU to EXTRA_DIST.
- - Split out the GPU specific information from the README into a README.GPU file.
- - Update docs and reorder README to show executive summary near top.
- - Add more FAQs about crossfire.
- - Convert error getting device IDs in ocl code to info log level only since
- multiple platforms may be installed and the error is harmless there.
- - Unnecessary extra array in ocl code.
- - Cope with the highest opencl platform not having usable devices.
- - Update kernel file names signifying changes.
- - Use constants from the array of __constants throughout the diablo kernel.
- - Create a __constant array for use within diablo kernel.
- - Use global constant arrays for all other constants used in scrypt kernel.
- - Use global __constants for sha functions in scrypt kernel.
- - Use constants for endian swap macros.
- - Revise scrypt kernel copyright notice.
- - Separate out additions in scrypt kernel.
- - Reuse some Vals[] variables that can be assigned to constants earlier in the
- poclbm kernel, making for fewer ops.
- - Put all constants used in poclbm kernel into __const memory array to speed up
- concurrent reads on the wavefront.
- - opencl: Support for reading temperature from free software radeon drivers via
- libsensors
- BFGMiner Version 3.0.3 - June 13, 2013
- - make-release: Include all submodules, recursively
- - Remove API.java example (no copyright license)
- - Minimally fix "make install" to ignore bitstream sources
- - Add submodule for ZtexBTCMiner (aka ztex_ufm1_*)
- - Add submodule for X6000_ztex_comm4 (aka x6500-overclocker-0402)
- - ztex: Use standard file header/comment formatting, and update license to GPLv3
- - bitforce: Allow a longer timeout (1250ms) for ZCX (Device Information)
- commands
- - Bugfix: pdcurses doesn't like changing logwin size without clearing it also,
- so do that in display options
- - -S all: Start QueryDosDevices probe with 256-byte buffer
- - Use common code to ensure the prefix of -S *:all remains in all
- implementations of it (/dev glob was removing prefixes)
- - bitforce_queue: Ensure comma following nonce count is there, to error cleanly
- - bitforce: Report queue send failures, and count as hw errors
- - Bugfix: bitforce_queue: Don't try to send ready-to-queue work to device, when
- there is no ready-to-queue work
- - Bugfix: bitforce: Clear want_to_send_queue flag when flushing queue, since we
- can't send an empty queue
- - bitforce: Include new total queued count in flush debugging
- - Bugfix: bitforce_queue: Implement a minimum wait time of 10ms
- - README: Document serial device format for Mac OS X
- - Bugfix: cairnsmore1: Enable building with libudev autodetection even if only
- icarus drivers are enabled
- - Bugfix: sysfs autodetect: Continue searching even after finding one tty (fixes
- multiple ttys per device, such as some Cairnsmore1s)
- - Bugfix: ztex: Avoid destroying libztex device in case other processors are
- still in use (fixes crash when 1.15y becomes unavailable)
- - Update windows-build.txt
- - ccan: Add missing copyright comment headers
- - Remove obsolete mknsis.sh
- - Add missing copyright sections to files that may need them
- - Standard copyright format (including year) for adl_functions.h
- - Bugfix: When disabling device, ensure its prev_work (if any) gets freed
- properly
- - Check stratum socket exists and is writable before even considering whether
- the sessionid is the same or not
- - Bugfix: Check that the stratum_share struct for a failed submission is still
- in the submission hashtable before trying to delete it
- - README: Add missing documentation for CPU algorithms cryptopp_asm32, sse2_32,
- and altivec_4way
- - Bugfix: icarus: Check work restart before timeout
- - Bugfix: icarus: Debuglog the correct read timeout (and omit from work restart
- since there's no trivial way to get it)
- - README: Update links
- - Bugfix: cpu: Fix warning on Win64
- - Bugfix: avalon: Strict formatting
- - Bugfix: Cleanup trivial warnings
- - Bugfix: bitforce: Seek to end of nonce counter to find nonces, in case there
- are more than 9
- - Bugfix: Build hexdump.c into the project normally like everything else
- - Bugfix: Really fix device entries in saved config file
- - Update the write config to properly record device entries and remove disabled
- option.
- - avalon: Really fix applog formatting
- - va_copy is meant to be matched by a va_end in log_generic.
- - Further fix distdir for hexdump.c
- - Fulltest is true if value is <= target.
- - Fix warning with no curses built in.
- - Bugfix: configure: Check NEED_FPGAUTILS correctly
- - configure: Better grammar for --enable-cpumining help
- - Bugfix: Check for SSE 4.1 support before building sse4_64 asm CPU miner (uses
- MOVNTDQA instruction)
- - Bugfix: elist: Use uintptr_t for member offset
- - Bugfix: opencl/adl: Fix format string
- - Bugfix: opencl: Correct usage of formatted prints
- - Increase fd limits as much as possible at startup
- - Bugfix: bitforce: bulk queue: Cleanly retry for high temperature recovery
- - Fixed deps for raring, which has newer libudev1.
- - bitforce: debuglog actual result data
- - Bugfix: Missing 'else' can result in null pointer dereference in race
- - Minor grammo in avalon driver.
- - Make avalon temperature reading LOG_INFO level.
- - Fix the problem of seting up termio of ttyUSB0 for icarus. the CSIZE is the
- mask of CS2/4/8
- - bufsize is an unsigned integer, make it so for debug.
- - Bugfix: bitforce: Include get_api_stats in BQUEUE mode
- - Bugfix: Always compile support for commandline --temp-target and
- --temp-cutoff, and write them in the config for all devices
- - Bugfix: Ensure cURL timers get set correctly in submission thread
- - Bugfix: modminer: Remove unused parameter to sprintf
- - Bugfix: modminer: Use correct format for bytes left in bitstream upload
- message
- - Bugfix: Access strategy name string directly instead of accidentally
- - Add printf-format syntax checks to more functions that should use it
- - AUTHORS: Add more contributors
- - Support configure flag --with-system-libblkmaker to allow building without the
- bundled copy
- - Bugfix: Use HTTP/1.1 compatible product token for User-Agent header
- BFGMiner Version 3.0.2 - April 28, 2013
- - Receive failures in recv_line should unconditionally fail.
- - Use sock_blocks function for stratum send and receive.
- - Avoid applog under stratum_lock in __stratum_send.
- - Create an OS specific sock_blocks function.
- - There should be no error response code with return value 0 in recv_line.
- - Check for errors on stratum recv for any recv return value less than 1 and
- only parse the response if it's positive.
- - Avoid applog under stratum_lock in recv_line.
- BFGMiner Version 3.0.1 - April 24, 2013
- - Bugfix: configure: Move actual roundl macro back to miner.h after math.h
- should be included
- - Bugfix: configure: Use dummy pointer to correctly detect roundl when conftest
- main is missing argc parameter
- - Bugfix: configure: Use variable argument to roundl to prevent compilers from
- optimizing it out entirely
- - Remove bitstreams from Windows binary distributions (README directs users to
- download source and copy them)
- - make-release: Remove autom4te.cache from distributed source
- - Bugfix: Omit --no-opencl-binaries option from build if OpenCL is not being
- compiled
- - Bugfix: Check that all pools have URIs set before starting
- - Bugfix: bitforce: Make noncebuf large enough for max qresults +1 (for OK line)
- - opencl: Ability to avoid using binary kernels with new --no-opencl-binaries
- option
- - README: Include jansson PKG_CONFIG_PATH in example for Mac
- - Include trailing \0 with coinbase sigs if there's room
- - Differentiate socket closed from socket error in recv_line.
- - Add new best share info to verbose logging.
- - Add notice for when network diff is changed.
- - convert sleep(const) to nmsleep()
- - Rename longpoll threads according to what pool they're associated with
- - miner.php report 'Last Valid Work' as time before request
- - API V1.25 - add 'Last Valid Work' time for each device
- - add 'count' to customsummarypage 'calc'
- - Bugfix: ztex: Initialize fw_buf pointer to NULL so a free before allocation is
- safe
- - Cleanup when stratum curl fails to initialise.
- - LTC text typo
- - Recreate cURL for new stratum connections, and clear stratum_notify on
- suspending them
- - clear_stratum_shares: Rename diff_stale variable to diff_cleared
- - MMQ it's a bitstream
- - Update a pool's last work time when the work is popped as well as staged.
- - Extend stratum connections another minute (total 2 minutes) after the last
- work item was staged, and maintain last_work_time for non-stratum pools.
- - Fix --benchmark generating valid work for cgminer.
- - Bugfix: Correct pdbuilder result directory
- - Omit add_serial_all code when serial support is not wanted
- - Use configure to detect presence of roundl to avoid redefining an actual
- function (possibly inline)
- - Bugfix: roundl: Add needed parenthesis to perform ?: before +
- - Bugfix: ft232r: Defer allocating structure until after USB endpoint is
- successfully opened, so it won't leak in case of failure
- - Bugfix: ztex: Free bitstream in memory when done with it
- - Bugfix: Safely handle all-space cURL debug messages, should they ever happen
- - Silence warnings about poor format usage for quit()
- - Apply noreturn and printf-format attributes to quit() function definition
- - Bugfix: set_serial_rts get flags to manipulate them correctly
- - Bugfix: Missing return for /dev globbing
- - Bugfix: Free unused work when retrying failed lp request
- - Display processor name with thread disabled/re-enabled messages
- - Move best share to top summary line, and add network difficulty to block line
- - opencl: Default to phatk kernel for Mesa platform
- - opencl: Default to single thread with Mesa OpenCL
- - opencl: Check for Mesa OpenCL and avoid using binary kernels with it
- - bitforce: Never increase bulkqueue poll wait time during queue underruns
- - bitforce: Start off polling bulk queue every 100ms
- - bitforce: Log device queue size after getting bulk results
- - bitforce: Ensure bulkqueue polling occurs at least once a second
- - opencl: Include OpenCL platform in kernel binary filenames
- - bitforce: Use bulk queue mode for all SC devices
- - Bugfix: bitforce: When reinitializing, free all known works to avoid
- decrementing reset queued counter
- - bitforce: Handle timeout during ZOX as cleanly as possible
- - Bugfix: bitforce: Make reinitialization more complete and safe
- - Bugfix: bitforce: Close opened fd if reinit fails
- - Bugfix: bitforce: Retry ZGX until device is NOT busy
- - bitforce: Log when zero queued results are received
- BFGMiner Version 3.0.0 - April 5, 2013
- - Update libblkmaker to 0.3.0
- - debian: Include new api-example.py in docs
- - added example for Python using the RPC API
- - added SPEC file for SUSE distributions
- - Bugfix: bitforce: Free initialization data to avoid trivial one-time memory
- leak
- - Support for local submission of found blocks (GBT only)
- - bitforce: RPC pgaset fanmode 0-5 for manual fan control
- - bitforce: More debugging information
- - Bugfix: modminer: Since RPC always includes the temperature, we don't need to
- add it specially
- - bitforce: Expose dual temperature sensors to RPC
- - bitforce: Support for up to 2 temperature sensors per processor
- - Bugfix: bitforce: BFP_QUEUE: Attempt to recover from extra queue results, or
- the next job finishing early
- - bitforce: Always send a new job ASAP after flushing the queue
- - bitforce: Implement "Queue Job Pack" (ZWX) and use it for XLINK devices to
- avoid USB latency issues
- - bitforce: Ignore INPROCESS added to ZOX response
- - Implement minerloop_queue for devices that process work items too fast to keep
- track of which one they're currently working on
- - bitforce: Split ZOX command into its own function
- - Bugfix: DevAPI: Free work when preparing it fails
- - DevAPI: Abstract get_and_prepare_work for minerloops
- - DevAPI: Move select() logic from minerloop_async to do_notifier_select
- - Clarify stratum mining.set_difficulty debug log message
- - No longer call configure from autogen.sh
- - Bugfix: bitforce: Ensure result_busy_polled gets set for queue mode to avoid
- unnecessary 10ms wait times
- - Bugfix: bitforce: Use common code for end of job_get_results, so queue results
- don't short-circuit timing code
- - Bugfix: bitforce: Ensure "OK" doesn't remain in queued results buffer
- - Bugfix: bitforce: next_line needs to increment beyond the newline character
- - Update README for x970 memdiff values.
- - Do not scan other gpu platforms if one is specified.
- - Update README for sync objects on windows.
- - Add information for setting gpu max alloc and sync parameters for windows with
- scrypt.
- - Whitelist AMD APP SDK 2.8 for diablo kernel.
- - Show pool number in switch message
- - Clear just the socket buffer when we don't care what is left in a stratum
- socket.
- - Clear the stratum socket whenever we are closing it since the buffer is going
- to be reused.
- - Do not continue work from a stratum pool where the connection has been
- interrupted.
- - Close any existing stratum socket if we are attempting to restart stratum so
- the pool knows the connection has gone.
- - Show mechanism of stratum interruption if select times out.
- - Make stratum connection interrupted message higher priority to be visible at
- normal logging levels.
- - API add 'Network Difficulty' to 'coin'
- - avalon: if all result are wrong in one batch read. reinit the avalon
- - avalon: record the last result temperature info
- - delay when close avalon; only record matched result
- - avalon: fix no_matching_work only count when debug
- - avalon: minor change
- - avalon: add idle code
- - avalon: fliter the temp_max >= 100, print the result for debug.
- - avalon: export more data to API stats
- - avalon: add default chip frequency
- - avalon: fix the work_i3 init
- - avalon: add reinit_device
- - avalon: the temp_history_count base on timeout
- - avalon: fix mistake on adjest_fan
- - avalon.c: fix the copyright
- - bfgminer-rpc: add -o option: no format, only the result
- - avalon: update fan pwm
- - avalon: update the FAN_PWM MAX/MIN
- - avalon: minor change
- - avalon: overclock code
- - avalon: fix the display
- - avalon: minor change
- - avalon: fix the fan/temp control
- - avalon: fix the temp_avg
- - avalon: fix temp
- - avalon: add fan/temp control
- - avalon: add FAN speed factor
- - avalon: add TODO on fan/temp control. cleanup detect
- - avalon: add the gate_miner bits
- - avalon: only send one byte on reset
- - avalon: add support on send 2 bulk taskes at begin
- - avalon: fix the hash_count return
- - avalon: fix the LOG_WARNING
- - avalon: add comment on hash_count
- - avalon: WORKAROUND on hashrate
- - avalon: update max miner_num
- - avalon: add more info on api
- - avalon: add nonce_elf and more info on match miner_num
- - avalon: change reset to 300ms
- - avalon: move bulk buffer to it's info structrue
- - avalon: more work on hashrate and read_count
- - avalon: add baud 38400 support
- - avalon: fix nonce_range EB
- - avalon: fix the hashrate wrong
- - more info on avalon API
- - avalon: fix the nonce_range EL
- - avalon: fix the read count
- - avalon: more work on nonce_range
- - avalon: read() times and send delay fixed
- - avalon: add the send delay option
- - avalon: print out fan/temp info
- - avalon: add the result info (fan/temp etc)
- - avalon: more check on hardware error
- - avalon: more work on get_work_count
- - avalon: now we have dynamic get_work_count
- - avalon: more work on parameters
- - avalon: add timeout parameter
- - avalon: baud as parameter now
- - avalon: send work pitch should be : (15*(8+2)*4/19200)s
- - avalon: more work on match work
- - avalon: fix free_work
- - avalon: continue on reset work. wait for buffer empty
- - avalon: add options, if write() error. sleep(1) before reset()
- - avalon: more cleanup
- - avalon: finish read when Buffer empty
- - avalon: fix the nonce EB issue
- - avalon: MORE work
- - avalon: fix the EB/LB issue
- - avalon: some cleanup
- - avalon: fix the first configure task
- - more work on the avalon buffer
- - avalon: fix the BIG_ENDIAN issue
- - avalon: Fix the buffer statu
- - change defines to avalon parameters
- - fix the cts return
- - avalon: change the data to uint8_t, add some test temp code
- - avalon: fix task init
- - avalon: more data format work
- - change to avalon data format
- - debug: add a debug hexdump.c
- - avalon: add some code on match work
- - avalon: try to correct the pool_status and dev_status
- - avalon: more work on multi-works
- - avalon: more work on read
- - avalon: more work on get results
- - more RTS code on avalon.c/h
- - more RTS code
- - avalon: some cleanup
- - avalon: more work on new work queue structrue
- - fpgautils.c: use lancelot as target
- - avalon: since we submit task as bulk data. modify again
- - add scanhash_queue
- - renmae avalon.h to driver-avalon.h
- - fpgautils.c: add get_serial_cts
- - understand the avalon protocol more
- - avalon: new software structrue but target as lancelot
- - add avalon.h
- - avalon: fix warning
- - avalon: add TODO comments
- - more AVALON defines
- - avalon: more work
- - add driver-avalon.c
- - add avalon support to automake
- - Default to work queue mode on BitForce SC devices
- - bitforce: Implement support for non-contiguous XLINK slave addressing
- - gnulib: stdint: fix build with Android's Bionic fox x86
- - gnulib: stdint: Improve support for Android.
- - gnulib: stdint: Add support for Android.
- - Check for ?e##toh macros independently from hto?e##
- - If pthread_cancel is missing/emulated, set asynchronous thread cancel type on
- stage, watchdog, watchpool, and longpoll threads since the emulation cannot
- support deferred cancellation
- - If pthread_cancel is missing (Bionic/Android), emulate it using pthread_kill
- and pthread_exit
- - configure: Intelligently detect what flags/libs get us working pthread, and
- define HAVE_PTHREAD_CANCEL if pthread_cancel is available
- - Bugfix: Initialize mutex_request to invalid so devices that don't use it
- (bitforce) don't try to
- - RPC: pools: Add "Message" to show last client.show_message received over
- stratum
- - Stratum: Support client.show_message method
- - Don't retry without resume support, if the first attempt just timed out
- - Bugfix: minerloop_async: Intelligently handle work updates and device disables
- during transitions
- - Bugfix: minerloop_async: Free old (unused) prepared work when replacing it
- with an upgraded one
- - Bugfix: Free pool sessionid before replacing it
- - Bugfix: Stratum: Address dereference-after-free and memory leak introduced in
- resume support
- - Stratum: If old protocol fails as well, try to resume again next time around
- - Bugfix: Stratum: Only failover to old mining.subscribe protocol if the
- previous attempt was the new one (fixes a flood of retries)
- - Try to extract the sessionid associated with mining.notify on 3rd level array
- and submit it along with the userid to support mining resume, failing gracefully
- and restarting if the pool rejects it.
- - Cope with misread sessionid on stratum for now.
- - Use the sessionid as passed on stratum connect to attempt to resume a
- connection once and then clear it if it fails, to use a new connection.
- - Move to storing the nonce1 in the work struct instead of the sessionid for the
- now defunct first draft mining.resume protocol.
- - Only continue submitting shares with mining.resume support on stratum when the
- session id matches.
- - Provide support for mining.resume with stratum, currently re-authorising after
- successful resumption pending finalising of the protocol process.
- - Provide basic framework for restarting stratum depending on whether resume
- support exists or not.
- - Abstract out the setting up of the stratum curl socket.
- - Remove redundant setting of strings to NULL since the whole work struct is
- zeroed.
- - Only clear stratum shares mandatorily on stratum dropouts when the pool does
- not support resume.
- - Stratum: Keep trying to submit shares, even across reconnects
- - Use new select loop primitives in submission thread
- - Bugfix: Missing pool_no parameter to applog for no-stratum-sessionid debug
- message
- - Do as much outside of mutex locking of sshare_lock as possible.
- - Remove last reference to struct work used outside the sshare_lock in
- submit_work_thread
- - Unlock the sshare_lock in submit_work_thread when all references to work and
- sshare are complete.
- - Bugfix: Copy and free sessionid on work objects
- - Add timestamps to stratum_share structs as they're generated and copy the
- stratum sessionid if it exists to stratum work generated.
- - Store session id for stratum if the pool supports it for future mining.resume
- support.
- - Keep the unique id of each work item across copy_work to prevent multiple work
- items having the same id.
- - x6500: Never consider processors idle if they're enabled
- - x6500: Make mutex management cleaner by blocking device select loop during
- idle get_stats
- - Bugfix: minerloop_async: Always refer to real thread for select loop
- - Bugfix: Initialize work_restart_notifier[1] to INVSOCK instead of -1 to be
- portable
- - ztex: Use restart_wait to react quicker to work updates
- - Handy TIMEVAL_USECS macro
- - Restore blocking restart_wait function with nearly identical semantics as old
- one
- - Bugfix: bitforce: Rework sleep delay adjustment logic to properly deal with
- more accurate timing readings (added in device API update)
- - Hidden --force-rollntime option for getwork pools (use like --pool-priority,
- after each pool definition)
- - Include processor id in get_work logging
- - Support for BIP23 BPE request target extension via new --request-diff option
- - Hidden option to reduce "work update" messages to debug level:
- --quiet-work-updates
- - Change "work restart" to "work update" in messages to reflect reality more
- accurately (no work is lost), and normalize case of "longpoll"
- - HACK: Since get_work still blocks, reportin all processors dependent on this
- thread
- - Move FD_SETSIZE definition to configure so it affects everywhere it needs to
- - Move absolute_uri function to util.c
- - Remove now-unused blocking-wait code (restart_cond, restart_wait, and
- stale_wait)
- - Bugfix: bitforce: Zero hashes complete if we get an invalid response
- - HACK: Since get_work still blocks, reportout all processors dependent on this
- thread
- - bitforce: Support for work queue protocol on BitForce SC devices
- - Use new double-stage format for SC devices
- - modminer+x6500: Expose frequencies to API in terms of MHz to be consistent
- with ztex driver and cgminer
- - bitforce: Replace (bool)cgpu->nonce_range with (enum)bitforce_data->proto
- - bitforce: XLINK support for multiple processors
- - bitforce: Prepare log messages for XLINK by separating into proc and dev
- messages
- - bitforce: Always use fd/mutex pointers on actual device, to prepare for XLINK
- support
- - bitforce: Get fd/mutex pointers only once per function
- - bitforce: Abstract commands to bitforce_cmd1 (single-stage) and bitforce_cmd2
- (double-stage) functions
- - bitforce: Debuglog device information during detection
- - Bugfix: Missing includes needed on Windows
- - Bugfix: Use waddstr instead of wprintw to display completed device summary
- line, so literal %s don't get interpreted as formatting options
- - Bugfix: bitforce: Avoid polling continuously between work restart and job
- completion
- - bitforce: Use poll device API when job_get_results needs to wait
- - bitforce: Use poll device API when job_start needs to wait
- - stale_work_future function to determine in advance if a work/share will be
- stale at some future time
- - bitforce: Minimally refactor to adapt to new minerloop_async
- - minerloop_async: Break out of select on work_restart_notifier
- - Replace UNIX-only work_restart_fd pipe with portable work_restart_notifier
- - Bugfix: Clean out unused variables from minerloop_async
- - Move new device API code to new deviceapi.c source file
- - Make minerloop_async more async, using some callbacks to handle event
- completions
- - Split part of minerloop_async into do_get_results, and a bit other
- reorganization
- - Abstract select_timeout function to convert a realtime timeval to a timeout
- pointer for select()
- - Split part of minerloop_async into do_process_results, and don't allow
- api->job_get_results to return hashes
- - Split part of minerloop_async into do_job_prepare and do_job_start
- - Initialize thr->tv_poll to -1 (disabled)
- - Update the hashmeter one last time before disabling a device
- - minerloop_async: Break out of select for wakeup notifications
- - Replace mining thread queues (which were only used for wakeup pings) with
- notifiers (which can be used with select and co)
- - Unify all mining thread wakeup to mt_enable (simplifying code)
- - Bugfix: get_statline: Correct device summary status, only showing DEAD or OFF
- if it affects all processors
- - Working processor disable/enable with new async minerloop (currently gets
- stuck if all processors disabled)
- - Bugfix: get_statline: Only care about the processor status if
- --show-processors is set
- - Bugfix: watchdog: Use processor thr_info even if it isn't a real thread
- - Only support thread-per-device or N-threads-per-processor; simplify
- work_restart check
- - x6500: Remove mutex, since driver is single-threaded now
- - Bugfix: Update utility every get_statline call, and include every processor
- involved
- - HACKING: New text file to document the internal workings of (currently) the
- device API
- - Bugfix: mining_threads is now a total of thr_info objects, not necessarily
- actual running threads
- - x6500: Working (but incomplete) asynchronous/single-threaded driver
- - Incomplete (but workable) asynchronous minerloop
- - Core support for managing multiple processors from a single thread
- - Allow device drivers to implement their own minerloop
- - Move cgpu_info and thr_info initialization to main, and ensure all get
- initialized before starting any threads
- - Refactor and simplify miner_thread (no major behavioural changes)
- - Move difficulties to end of share result message, so they can be made to line
- up nicely
- - Bugfix: Consolidate share result message code (including fixing displayed
- hash portion for stratum)
- - miner.php: Include ProcID in Device column as a letter
- - Show summaries per-device unless --show-processors is used (also available on
- Display TUI menu)
- - Order next_proc linked list in processor id order
- - Consolidate processor summary line generation for TUI and text-only modes
- - RPC: Update to include ProcID so multiprocessor devices can be understood
- correctly
- - RPC: Common function for adding device-identifying fields
- - modminer: Make single-processor statline look like other temperature-only
- statlines
- - modminer: Split each FPGA into its own logical processor (in the same device
- still)
- - modminer: Get mutex pointer only once per function
- - ztex: Combine master+slave devices into a single multiprocessor device
- - Preformat dev_repr (device representation) and proc_repr (processor
- representation) once for use everywhere
- - x6500: Split each FPGA into its own logical processor (in the same device
- still)
- - x6500: Get mutex pointer only once per function
- - Minimal support for defining devices with multiple logical processors
- - Rename all README files to standard README.* style
- BFGMiner Version 2.10.6 - April 5, 2013
- - Bugfix: Restore missing variable
- - Bugfix: openwrt: Never include _ in platform name
- - Bugfix: Fixed typo in bfgminer-rpc usage
- - pool_active: Ensure temporary curl is always cleaned up
- - Try to find jansson via pkg-config first, and fall back to checking system
- defaults if that fails
- - Attempt to find libjansson via pkg-config if AC_CHECK_LIB fails
- - Update scrypt readme re drivers and sdk.
- - Bugfix: README: Move --device out of GPU only options
- - Update .gitignore
- - Added bfgminer-rpc binary to .gitignore
- - Bugfix: Actually change to the newly selected pool when statum is inactive and
- it decides to change
- - Bugfix: modminer: Properly fail on dynclock error
- - Bugfix: opencl: Clean pc_data->work before freeing pc_data
- - Bugfix: Correct order of libblkmaker libraries so static builds work
- - Bugfix: Need to ensure __BIG_ENDIAN__ is defined before including uthash.h
- - Bugfix: Stratum: When destroying cURL easy handle, be sure to clear pool
- stratum_curl pointer
- - Bugfix: bitforce: Fix warning
- - Bugfix: Stratum: Properly handle non-integer "id" for client.get_version
- requests
- - json_dumps_ANY utility function to portably implement json_dumps(..., ... |
- JSON_ENCODE_ANY)
- - Bugfix: bitforce: Free old name when updating it on reinitialization
- - Stratum: Include pool number in send/recv protocol logging
- - Include pool number in stratum thread name
- - API always report failed send() replies
- - API.java allow partial reads
- - Bugfix: Stratum: Use curl_easy_cleanup to close connection, so cURL
- understands what is going on
- - Bugfix: hash_pop: If a work should be rolled, use a clone of it rather than
- consume a rollable work
- - openwrt: Move Makefile into a bfgminer subdirectory to avoid symlinking issues
- - openwrt: Use --with-curses=ncurses to avoid ncursesw dependency
- - configure: Support --with-curses=FOO to look for curses implementation in
- libFOO
- - Set pool socket to INVSOCK after closing connection, just in case
- - Clean up compiler warnings
- - Bugfix: Check that pool is active one last time before selecting it
- - Bugfix: Trim whitespace (like newlines) off the end of debug info from
- libcurl
- - Bugfix: submit_nonce: Backup the original work->blk.nonce since the miner
- code uses it to track work consumption
- - Bugfix: Scheduler needs to unpause disabled devices, even if it isn't waking
- them up
- - Bugfix: Use SOCKETTYPE for notifiers, to avoid potential overflow on Win64
- - Bugfix: Some versions of MingW define localtime_r, but don't handle the
- timeval.tv_sec case that we use; so undef any preexisting one and use our own
- - Bugfix: reinit_gpu: Remember the selected device to correctly change
- properties of
- - Bugfix: cpu: reinit_device hasn't worked since 93b284d, so just remove it
- entirely instead of letting it screw with thread 0
- - Document necessity to run ldconfig and possibly configure ld.so
- - Bugfix: Complete startup after just one pool is found active, no need to wait
- for the rest
- - Bugfix: Update links
- - miner.php: Replace PGA dev number with concatenated device ID
- - Bugfix: miner.php: Display devices with aligned columns instead of assuming
- they come out of the RPC aligned
- - Bugfix: miner.php: Silence PHP "local timezone" warning
- - Bugfix: api-example: Try to use BSD sockets on any non-Windows platform
- - Bugfix: stratum: Delay mining.get_transactions request until after auth has
- succeeded, so its failure doesn't abort the connection (also avoids any delay
- from a large result)
- - --no-getwork option to disable getwork protocol support
- - Clarify dependencies with Debian/Ubuntu package names
- BFGMiner Version 2.10.5 - February 8, 2013
- - Bugfix: Actually increment template_nonce when we use it
- - Change file modes.
- - Fix logic fail on partial writes with stratum send that was leading to corrupt
- message submissions.
- BFGMiner Version 2.10.4 - February 7, 2013
- - New platform ports: OpenWrt and Win64
- - Update official Windows build compiler and libraries:
- - - Upgrade GCC from 4.6.3 to 4.7.2
- - - Upgrade libusbx from 1.0.10 to 1.0.14
- - - Upgrade jansson from 2.3.1 to 2.4
- - - Upgrade libcurl from 7.26.0 to 7.28.1
- - - Upgrade pthreads-win32 from 2.8.0 to 2.9.1
- - Bugfix: Release libudev handle when ID_MODEL doesn't match what we're looking
- for
- - openwrt: Script to build for multiple platforms easily
- - openwrt: Bitstreams should be "all" arch
- - Working OpenWrt Buildroot Makefile
- - Do not enable the pool disable on reject feature unless explicitly enabled
- with --disable-rejecting.
- - Check for calloc failure for completeness in gen_stratum_work.
- - Cache the coinbase length to speed up stratum work generation.
- - Cache the header length when generating stratum work to avoid calculating it
- on every work generation, and to only need one alloc+sprintf, speeding up work
- generation.
- - Use heap ram for coinbase in gen_stratum_work, zeroing it before use.
- - Provide a wrapper for aligning lengths of size_t to 4 byte boundaries.
- - Bugfix: ztex: While 1.15y can finish highspeed FPGA config immediately, at
- least 1.15x needs some delay
- - Use CURLOPT_OPENSOCKETFUNCTION to intercept the socket being created for
- stratum, in order to workaround CURLINFO_LASTSOCKET breakage on Win64
- - make-release: Update for Win64 and bfgminer-rpc.exe
- - Use localtime_r instead of localtime, including a Windows implementation that
- handles Win64's broken struct timeval.tv_sec
- - Use standard execv arg type on Win64
- - Bugfix: Correct various size mismatches
- - Ensure winsock2.h is always included before windows.h
- - Bugfix: Add necessary Winsock library to bfgminer-rpc linking
- - Bugfix: Remove dependencies of compat.h on miner.h for Windows (moves
- timersub/timeradd to compat.h where it belongs)
- - modminer: Raise default/maximum clocks to 210 and 250 respectively
- - modminer: Use better-performing X6500 overclocker bitstream
- - Disable libusb linkage/usage when neither X6500 nor ZTEX support is desired
- - Add support for "--scan-serial all" via simply globbing /dev
- - fpgautils: serial_autodetect implementation using sysfs
- - fpgautils: Unified serial_autodetect function to find a serial device
- regardless of the underlying method
- - fpgautils: Look for bitstreams in ../share/bfgminer/ too
- - Bugfix: Ensure curses library is always linked in NCURSES_LIBS, to avoid
- unnecessary dependencies for (non-curses) tools
- - Bugfix: GBT: work->data is always little-endian, but libblkmaker wants the
- nonce in native-endian
- - Bugfix: cpu: Corrections necessary to get 'c' and 'cryptopp' algorithms
- working on big endian
- - Bugfix: Sanity check for bits exponent in real_block_target
- - Bugfix: cpu: Increment nonce after checking (rather than before), to avoid
- skipping the first nonce of each scanhash call
- - cpu: via: Only swap back the nonce, rather than all data
- - cpu: Minor optimization by checking H==0 before calling fulltest
- - Bugfix: Skip yasm check when building for non-x86 platforms
- - Allow --scantime alias to --scan-time
- - Build bfgminer-rpc program from api-example.c
- - Bugfix: Remove miner.h include from api-example.c since it isn't needed and
- pulls in libblkmaker
- - Make wrapping consistent at 79-80 characters per line
- - Bugfix: Correct numerous misspellings, typos, etc
- - Bugfix: Prefer using a non-frozen mining thread for watchdog
- - Bugfix: x6500: Expose x6500_fpga_data even if JTAG reset/detect fail, since
- it is still used to store temperature info if the other FPGA initializes
- - Adding ZTEX Windows guide from Jason Snell
- BFGMiner Version 2.10.3 - January 22, 2013
- - Revert "x6500: Whenever we get a hardware error, purge buffers just in case
- of read/write desync"
- - Bugfix: libblkmaker: Check that zero-padding on base58check input matches
- output (needed to properly reject addresses with too many or too few prefix/pad
- '1's)
- - Bugfix: Free bin2hex output in __update_block_title
- - Bugfix: Allocate space for the terminating null byte on new current_hash
- - Display tail end of prevblock hash rather than start+32bits
- - Try to extract block height from coinbase scriptSig, when mining stratum
- - Display next block height when using GBT
- - Use suffixes for target-difficulty also, in share accept/reject loglines
- - Bugfix: Implement common target_diff function, fixing scrypt-specific bugs in
- and simplifying common code shared by set_blockdiff, calc_diff, and share_diff
- - Set DISPLAY to :0 by default (on non-Windows)
- - Bugfix: Reset pool bytes received when zeroing stats
- - miner.php trim trailing zeros on some of the STATS numbers
- - Semi-Cherrypick: API stats - include pool network bytes + in miner.php
- - Best Share readme
- - API zero - zero statistics - all or bestshare - with optional on screen
- summary
- - api.c pgaenable not re-enabling the device - plus related debug
- - diffexactone pool diff1 used for share value calculation is ffffffff... not
- 100000000... :P
- - miner.php user/pass fix 'usr' is readonly
- - miner.php optional user/pass login restrictions
- - zero (most) API stats
- - Remember best share per pool and return in API pools
- - ztex: precheck the secondary solutions to avoid hw errors the ztex bitstreams
- gives back the latest checked nonce and its hash7 value and two possible
- solutions.
- - Bugfix: configure: if blocks require at least one command, so fill with true
- - Bugfix: Only log stratum resume if it was actually "idle" before
- - Zero the best share string memory when zeroing stats.
- - Change the pool stratum socket buffer to new cgminer implementation, to
- allocate it in a grow-only fashon and reduce virtual memory fragmentation at
- the expense of CPU time.
- - Differentiate socket full from sock full.
- - Allow stratum to startup without notify but check it is valid before creating
- stratum work.
- - Do not try to generate stratum work unless the notify command has succeeded.
- - Document Mac OS X configure usage with Homebrew pkg-config path
- - Clean up post-configure display of compile environment
- - Bugfix: If native ncurses detection fails, print "none?" result before moving
- on to try AC_SEARCH_LIBS scan
- - Fix more printf-format non-compatibilities
- - Update windows-build.txt
- BFGMiner Version 2.10.2 - December 27, 2012
- - Update documentation to include block difficulty
- - Reset all stats when requested
- - Reset total diff1 shares when zeroing stats as well to show correct work
- utility.
- - Update documentation.
- - Parse anything in the stratum socket if it's full without waiting. Empty the
- socket even if a connection is not needed in case there are share returns.
- - Provide a mechanism to zero all the statistics from the menu.
- - Display the current pool diff in the status line.
- - Display block diff in status line.
- - Generalise the code for solving a block to enable block solve detection with
- scrypt mining.
- - Generate the output hash for scrypt as well and use the one function to set
- share_diff.
- - Use one size for scratchbuf as a macro in scrypt.c
- - Remove the unused sha224 functions.
- - Check staged_rollable under staged lock, when cloning available work.
- - scrypt_diff uses a uint64_t as well.
- - Correct target for stratum support with scrypt mining.
- - Bugfix: Ensure nonces are put in data as little-endian in test_nonce*
- - Add low-level debugging info for data_buffer (some only enabled with
- -DDEBUG_DATABUF)
- - Make all_data_cb fwrite-compliant by returning nmembs, and check for unlikely
- overflows
- - Bugfix: Need to do extract_sockaddr before trying to initiate stratum
- (erroneous http URI usage, except at startup)
- - Bugfix: Update last GBT work in pool_active before staging it, since otherwise
- it could possibly be consumed before we copy it
- - Bugfix: Address Windows-specific formatting issues (including lack of support
- for %ll*)
- - Bugfix: ztex: Correct formatting for reset failure error
- - ztex: Fix formatting in a debug message
- - cairnsmore: Don't bother timing dynclock detection, since there's no standard
- way to log it accurately
- - Correct formatting in FPGA drivers
- - opencl/adl: Fix formatting to fit strict rules
- - Explicitly cast all_data.buf to char* for debug printing
- - Follow strict time_t handling rules
- - Use GNU format-checking attribute when available for applog
- BFGMiner Version 2.10.1 - December 21, 2012
- - libztex: fixed a typo
- - libztex: check returnvalue of libusb_claim_interface() and release the
- interface in case of early exit
- - Bugfix: submissions: Skip FD_ISSET when fd==-1 (let the next select setup deal
- with cleaning them out)
- - Bugfix: Remove sws from write_sws list when discarding it due to pre-send
- stratum disconnection
- - Bugfix: Shutdown stratum socket when initiate fails, so it doesn't linger
- - Bugfix: Clear stratum receive buffer when initializing, in case there was
- extra unprocessed data in it from a previous connection
- - Stop all work from the current pool if it's a stratum pool once it is
- disconnected since it will be invalid upon reconnecting.
- - Discard all staged work from stratum pools as well as the shares upon
- disconnection since all the work becomes invalid.
- - Use correct cbreak after 15 second delay when no pool is found alive.
- - modminer: Set default clock frequency to user request so it sticks better
- - modminer: Make valid frequency range consistent: 2-230
- - Allow stratum to work with scrypt.
- - MMQ add api pgaset for clock
- - API V1.23 - new pgaset command, to be used soon
- - Protect the best_share/best_diff values under control lock.
- - Bugfix: modminer: Return failure to change frequency when device reports it
- - opencl: Look in the right place for OpenCL library on Mac OS X
- - Bugfix: AC_C_BIGENDIAN is reported to have problems, and invasive even if
- buried in a conditional, so don't use it
- - Bugfix: Check for bswap_* first, to avoid redefinition based on other variants
- - Bugfix: autoheader isn't smart enough to figure out variable defines, so use
- AH_TEMPLATE for each possible header
- - Check a stratum pool hasn't gone dead while being a backup pool and missed
- having its idle flag cleared.
- - Fix null pointer issue when one chip on an X6500 is not initialized yet when
- reading temperature.
- - Hot-patch broken libcurl pkgconfig CFLAGS found in libcurl's Windows binaries
- - Update OpenCL 1.2 headers from http://www.khronos.org/registry/cl/api/1.2/
- - Reorganize detection of platform byteswap macros and endian to be more robust
- using autoconf
- - Move new bandwidth-based Efficiency to status line
- - Replace work-based efficiency with new bandwidth-based efficiency
- - Bugfix: Pull out GBT request collapsing since it is no longer needed with new
- get_work main loop
- - Bugfix: Free unused work when waiting on external GBT request
- - README: Explicitly mention automake dependency
- - README: Update AMD APP SDK URIs
- - Bugfix: Free shares discarded before beginning submission
- - Bugfix: Discard stratum shares waiting for a writable socket, if the pool
- disconnects in the meantime
- - Bugfix: Always let watchpool thread handle dead pool recovery (including for
- stratum-only pools)
- - Bugfix: Avoid lingering stratum_auth when connection is lost
- - API-README explain custom page extensions in miner.php
- - miner.php add a sample group pool report
- - miner.php allow where,group,having on cumstom pages
- - Bugfix: Hook CURLOPT_DEBUGFUNCTION to count actual bytes sent/received by
- libcurl
- - Bugfix: Reset pool transparency_time when connecting to stratum
- - Bugfix: Immediately discard shares found on disconnected stratum pools, since
- there is no way to submit them
- - Bugfix: Decrement total_submitting when stale shares are discarded before any
- submission attempts
- - Bugfix: Only try to compare stratum job_id for work that has a job_id (ie,
- ones that came from stratum)
- - Bugfix: Recheck has_stratum even if the pool hasn't changed, in case pool has
- switched to another protocol in the process; also only delay 5 seconds before
- retry if pool is the same
- - Bugfix: Try GBT if no pool protocol is known (can occur in the process of
- stratum failover to GBT)
- - Bugfix: Correctly track discarded stratum shares, and log them as "disconnect"
- in sharelog
- - Check for EWOULDBLOCK when supported in send and recv as well.
- - Use the raw send() command instead of curl_easy_send since curl raw socket
- usage introduces random bugs on windows.
- - Use raw recv() command in place of curl_easy_recv since the curl
- implementation introduces random bugs on windows builds when the recv fails.
- - miner.php when displaying a single rig, add prev/next rig buttons if they
- exist, next to refresh
- - miner.php allow custom page joins for STATS
- - miner.php - include windows easyphp link
- - driver-ztex: use the correct size for the swap array
- - API stats - display pool byte transfer stats
- - Pool store data transfer stats
- - Benchmark incorrect work size
- - ChangeLog refer to NEWS
- - driver-ztex: search the complete noncerange based on the actual speed
- - API-README update
- - api use a dynamic io buffer, truncated before it reaches the current ~64k
- limit
- BFGMiner Version 2.10.0 - December 11, 2012
- - Bugfix: Free work before replacing it with clone
- - Bugfix: Since we are using pipes for select notifier on *nix, we need to use
- read/write there
- - Bugfix: Winsock needs send/recv for sockets, not write/read
- - Bugfix: opencl: Initialize pc_data to avoid clean_work checking uninitialized
- pointers
- - Bugfix: Correct parenthesis in bind() call in Windows notifier_init
- - Include Windows error messages in notifier_init errors
- - Include prctl header for thread renaming to work.
- - Set tv_idle time if a pool is not active when input from the menu.
- - minor unlikely zero pointer test
- - BeaverCreek doesn't like BFI INT patching.
- - Only stratum pools that are idle need to be kicked via cnx_needed.
- - Do not do any setup if opt_api_listen is disabled in api.c.
- - libztex: in case the selectFpga() failed set the selected fpga to unknown
- - Only set the lagging flag for select_pool() on failed getwork if we're not in
- opt_fail_only mode.
- - driver-ztex: support for broken fpga on a multifpga board
- - libztex: use a function for the twice called firmware reset code
- - libztex: removed an unused struct member (ztex->valid)
- - Set the pool lagging flag on startup to avoid it being shown initially, and
- only unset it once the maximum number of staged work items has been reached.
- - libztex: Include compat.h for substitute libusb_error_name (on older libusb
- versions missing it)
- - Suppress warning about "succeeded" not being used in finish_req_in_progress
- for now
- - Bugfix: Always give the get_work thread a curl, regardless of other
- outstanding curls in use
- - Bugfix: Failover after even a single job-request failure (or else it takes
- too long on timeouts)
- - Bugfix: Need to remove and re-add curl easy handles from multi to start a new
- request
- - Access total_submitting under mutex lock to avoid any potential races, and
- increment it as soon as we queue the submission up
- - Just leave the submit_work thread running persistently
- - Bugfix: Restore work->pool after prepare_rpc_req since clean_work now clears
- it
- - Bugfix: Now that stage_work is trying to manipulate staged_work in the same
- thread, clone_available needs to stage it outside of its own lock
- - Make main() the getwork scheduler once everything is set up, so that all app
- exits use the kill_work and quit paths.
- - Set successful connect to true on auth stratum to allow summary on exit from
- single stratum pool.
- - Hash_pop should signal further waiters on its own pthread conditional in case
- there are multiple waiters.
- - Check the job_id has not changed on stratum work when deciding if the work is
- stale as might occur across disconnections.
- - Perform pool_resus on getwork pool that generates work in getwork_thread.
- - Set pool lagging message for getwork pool that falls to zero staged in getwork
- thread.
- - Stage extra work when the primary pool is a getwork pool without rolltime.
- - Do not try to clean up twice if kill message is given.
- - Only recalculate total_staged in getwork thread if required.
- - Include the correct config header in libztex and include it before other
- includes.
- - Implement a completely new getwork scheduler. Stage all work from the one
- thread, making it possible to serialise all requests minimising the number of
- getworks requested or local work generated. Use a pthread conditional to wake up
- the thread whenever work is removed to generate enough work to stay above the
- watermark set by opt_queue. Remove all remnants of the old queueing mechanism,
- deleting the now defunct queued count.
- - Bugfix: Clean up share hashing and target checks, fixing share difficulty
- calculation for above-target would-be-shares
- - Use templates from pool_active and longpolls without fetching more
- unnecessarily
- - Try to avoid requesting GBT jobs when there is already a request in progress
- that will likely provide sufficient work
- - Reuse most recent GBT job if in get_work_thread if it isn't stale
- - libztex: fixed some warnings and removed some whitespaces
- - Remove all references to the now unused workio_cmd structure.
- - Remove the old workio command queue thread, replacing it with a kill
- conditional to exit the program.
- - Remove getwork command from workio_cmd queues and do them directly from
- queue_request.
- - Begin tearing down the old workio command queues by removing submit commands
- from there and submit them asynchronously via their own threads.
- - driver-ztex: changed two pairs of malloc()/memset() to calloc()
- - libztex: Read bitstream file in 2kb blocks with simpler and faster code
- - Added the binary versions of ztex_ufm1_15d4.ihx and ztex_ufm1_15y1.ihx
- - libztex: Add firmware download support for ZTEX 1.15d and 1.15x
- - libztex: Factor out local version of libusb_get_string_descriptor_ascii()
- - libztex: Don't return error when a bitstream was already configured
- - libztex: Read bitstream file in 64kb blocks with simpler and faster code
- - libztex: Verify that the mining firmware is not a dummy firmware
- - libztex: Match mining firmware ZTEX descriptor against the dummy firmware
- - libztex: Start download sequence only after reading in the new firmware
- - libztex: Download mining firmware to all devices with dummy firmware
- - Update windows build instructions.
- - Set pool probed to true on successful authorisation with stratum to avoid it
- being pinged later.
- - Style changes.
- - Allow pool active to be called on stratum or disabled pools in the watchpool
- thread if the pool has not been probed.
- - lock (most of) the threaded statistics updates
- - README stats don't add up
- - Rearrange summary lines and include count of active submissions in progress
- - Defer submissions instead of blocking in pop_curl_entry
- - Run a single share submission thread asynchronously submitting all shares in
- parallel
- - Handle share submissions asynchronously, one at a time (still threaded)
- - Split up json_rpc_call so it can be used asynchronously in libcurl-multi
- - Split submit_upstream_work into _request and _completed stages, pulling out
- json_rpc_call
- - Bugfix: Adjust USB_* variables to new LIBUSB_* names
- - Bugfix: Avoid double-free due to realloc_strcat moving memory around
- - Bugfix: Stratum connections might be needed for share submissions up to a
- minute after the last time they are used to generate work
- - Bugfix: Clean work before trying to generate new stratum work on top of it
- - Bugfix: modminer: Get rid of useless usbutils include
- - Make need connection return true if a pool is idle.
- - New --skip-security-checks option to allow miners to skip checks when it
- saves bandwidth
- - Skip stratum transaction download when there are no transactions
- - API add Best Share to summary
- - API lock access to some summary statistics (and copy them)
- - Enable backup stratum connections for getwork when the primary pool doesn't
- have longpoll aka solo mining.
- - Check for correct absence of opt_fail_only in cnx_needed.
- - Remove unused variable.
- - The specification for stratum has been elaborated to say that a changed diff
- applies only to new work so do not retarget when submitting shares.
- - Suspend stratum connections to backup pools when there is no requirement to
- potentially grab work from them.
- - Rename rename_thr to RenameThread to match cgminer
- - modminer: Adopt symbolic command names from kanoi
- - Make gen_stratum_work more robust by using a dynamically allocated array for
- the header in case bogus data is sent by the pool to avoid overflowing a static
- array.
- - scrypt_diff now returns a uint64_t
- - Support monitoring and reporting much higher diffs for scrypt mining,
- truncating irrelevant zeroes from displayed hash.
- - Pass ostate values around in scrypt to be able to extract full hashes if
- needed later on.
- - Revert "Handle crash exceptions by trying to restart cgminer unless the
- --no-restart option is used."
- - Provide helper function realloc_strcat to extend arbitrary length arrays
- based on string length.
- - Use base_work for comparison just for cleanness in __copy_work
- - Remove all static work structs, using the make and free functions.
- - Add pool no. to stale share detected message.
- - Add info about which pool share became stale while resubmitting.
- - Reduce extra slots in the max backlog for ztex to minimise memory waste.
- - Get rid of unused last_work in opencl thread data.
- - Do away with the flaky free_work api in the driver code which would often lose
- the work data in opencl and simply flush it before exiting the opencl scanhash.
- - Minor work handling restructure, including moving some stratum data from
- fixed-size buffers to their own heap allocations.
- - opencl: Use new dev_error function for REASON_DEV_NOSTART
- - Provide rudimentary support for the balancing failover strategies with stratum
- and GBT by switching pools silently on getwork requests.
- - Convert remaining modminer and bfl uses of usleep to nmsleep.
- - Convert libztex to nmsleep where possible.
- - Convert unreliable usleep calls to nmsleep calls in ztex driver.
- - Tidy up device error counts
- - Only increase gpu engine speed by a larger step if the temperature is below
- hysteresis instead of increasing it to max speed.
- - Convert pool not responding and pool alive message on backup pools to verbose
- level only since they mean a single failed getwork.
- - Use stratum block change from backup pools as an alternative to longpoll for
- pools that don't support LP.
- - Round some more static string arrays to 4 byte boundaries.
- - There is no need for the static arrays to be larger than required, so long as
- they're 4 byte aligned to appease ARM.
- - Hash1 is only used by the CPU mining code and never changes so remove it from
- the work struct and bypass needing to process the value for all other mining.
- BFGMiner Version 2.9.5 - December 11, 2012
- - Bugfix: Copy share hash to work->hash before doing 4-byte flip required by
- fulltest
- - driver-ztex: libztex_setFreq() must be called before ztex_releaseFpga()
- - libztex: Make log messages say bitstream when refering to bitstreams
- - Increase FD_SETSIZE to 4096 on Windows
- - Bugfix: Use AC_PROG_CPP in libusb include subdirectory detection for improved
- portability
- - Bugfix: Free input memory after prioritising pools in TUI
- - Bugfix: Free filename entry for writing config file when done with it
- - Bugfix: Free stratum nonce1 before replacing it with new value on reconnect
- BFGMiner Version 2.9.4 - December 4, 2012
- - Update libblkmaker to 0.2.1
- - Count template number, and append it to the coinbase of templates without any
- cbtxn
- - Bugfix: bitforce: Always increment global hw error counter when incrementing
- device hwe
- - Bugfix: Correct order of printf-style arguments in cbappend fail
- - Bugfix: Capitalize "MHz" correctly
- - ztex: Correctly release mutex and reset FPGA if configuration fails
- - ztex: Harmonize low-speed FPGA configuration code with high-speed code
- - libztex: Silence warning: comparison between signed and unsigned
- - Count longpoll decodes as queued work since the count otherwise remains
- static.
- - Bugfix: Assign header-based rolltime before decoding work, so GBT expires
- overrides it properly
- - Look for libusb_init in -lusb, since FreeBSD has it there
- - Bugfix: Use pkgconfig for libusb when available, and try to guess the include
- path if not
- - Bugfix: FPGA-README: Correct idVendor in example MMQ udev rule
- - fixes target calc for mips openwrt
- - Bugfix: clear_work: Whether the template is in fact being freed or not, the
- work reference to it needs to be
- - libztex: Work around ZTEX USB firmware bug exposed by the FreeBSD libusb
- - README: Document solo mining usage
- - README: Update dependencies
- - Bugfix: We should never roll stale work
- - Ubuntu: Removing erroneous libssl dep again. GITHUB#94
- - Bugfix: Clear out stratum share work before freeing it
- - Provide rudimentary support for literal ipv6 addresses when parsing stratum
- URLs.
- - Do not attempt to remove the stratum share hash after unsuccessful submission
- since it may already be removed by clear_stratum_shares.
- BFGMiner Version 2.9.3 - November 16, 2012
- - Bugfix: Properly process new stratum jobs through test_work_current, even if
- old shares are still accepted, and copy submit_old flag correctly
- - Ensure pdiff 1 is always caught regardless of bdiff precision, and ceil all
- other cases to ensure we never lose valid shares
- - Check against a double for current pool diff.
- - Support for fractional diffs and the classic just-below-1 share all FFs diff
- target.
- - Check share target diff for best_share to be calculated when solo mining.
- - Store the full stratum url information in rpc_url for correct configuration
- file saving.
- - Put in a hack to prevent dud work from sneaking into test_work_current being
- seen as a new block.
- - Reset the work->longpoll flag where it will affect stratum work items as
- well.
- - Bugfix: Stratum does not guarantee notify messages every minute, so extend
- timeout to 2 full minutes
- - Bugfix: Always honour libblkmaker time limits
- - Always (debug)log when stratum template is updated by the pool
- - Bugfix: When a stratum connection is interrupted, ensure all work/shares for
- it are considered stale
- - Bugfix: clear_sock should return on socket errors
- - Bugfix: Force calculation of work_difficulty since set_work_target fails to
- consider the pdiff<bdiff difference
- - Bugfix: Minimal support for handling real difficulties from stratum server
- - Bugfix: Never consider shares to be accepted if the submission response is an
- error
- - Bugfix: Always fail scrypt detection if Stratum is chosen
- BFGMiner Version 2.9.2 - November 7, 2012
- - Add endian swap defines for where missing.
- - Only retarget stratum shares to new pool diff if diff has dropped.
- - Bugfix: x6500: Use json_object_set_new to correctly count references to
- per-FPGA RPC data
- - Bugfix: modminer: Use json_object_set_new to correctly count references to
- per-FPGA RPC data
- - Bugfix: Only append newline when printing protocol data
- - Bugfix: Use memchr to look for newlines in socket line data, since the buffer
- isn't null terminated
- - Bugfix: Ensure GETWORK_MODE_GBT isn't replaced with GETWORK_MODE_POOL
- - Count lost stratum share submits and increase message priority to warning.
- - Show which pool untracked share messages have come from.
- - Sleep 5 seconds before retrying submit.
- - Changes to build prototypes to support building on FreeBSD 9.1-RC2 amd64
- - Count lost shares with stratum as submit stale lost.
- - Discard record of stratum shares sent and report lost shares on disconnection
- since they will never be reported back.
- - Check that count of transactions received via stratum is reasonable
- - Use realloc'd data_buffer to support stratum lines longer than 8 KB, and
- parse stratum responses during auth
- - Use mining.get_transactions to check for stratum pool transparency (actual
- response ignored for now)
- - ztex: Silence false "unexpected" hardware errors, and don't count them as hw
- errors
- - README: Update build instructions to reflect current reality
- - x6500: Expose per-FPGA details to RPC API
- - x6500: Implement support for --temp-target
- - x6500: Increase default clock frequency to 200 Mhz, now that new bitstream
- seems to run well around that
- - x6500: Flush nonces in FPGA buffer at initialization to avoid false hw errors
- on restart
- - x6500: Release device lock sooner during initialization, before logging
- initial frequency info
- - x6500: Read temperature sensors after sending work, when enabled
- - Bugfix: jtag: Fix optimized register reading code (it was reading an extra
- bit before the last, corrupting outside the buffer)
- - Implement new --force-dev-init option to force bitstream upload to modminer
- and x6500 devices
- - Bugfix: x6500: Include --scan-serial option even for x6500-only builds
- - Bugfix: ztex: Include --scan-serial option even for ztex-only builds, so it
- can be used to disable autodetect if needed
- - FPGA-README: Discuss X6500 --scan-serial usage of cases where it may be
- needed
- - ft232r: If we are searching for a specific serial, pay no attention to the
- product id
- - x6500: Try a more flexible approach to applying dynclock logic
- - Bugfix: dynclock: Use standard C struct initializer to handle initialization,
- instead of memsetting memory to nulls
- - x6500: Whenever we get a hardware error, purge buffers just in case of
- read/write desync
- - Bugfix: x6500: When purging ft232r buffers (during bitstream upload), also
- clear JTAG delayed read counter to avoid any potential desync
- - Bugfix: ft232r: Always flush writes before purging buffers, and empty local
- read buffer when flushing ftdi read buffer
- - There is no need for addrinfo any more.
- - Fix filename for x6500 bitstream to match previous commit's rename
- - Rename x6500 bitstream to match existing licensing naming setup
- - x6500 dual temp sensor support
- - x6500 is far more stable with its own bitstream
- BFGMiner Version 2.9.1 - October 30, 2012
- - When we find a block, always progress to it for mining
- - Bugfix: Enforce --expiry, but split --expiry-lp for a longer expiry on
- longpoll setups
- - Bugfix: regeneratehash needs to compare hash segments in Little Endian, not
- Big Endian
- - Bugfix: Always fail scrypt detection if Stratum is working
- - Bugfix: Scan for ft232r devices later, after console lock and other mutexes
- are initialized properly
- - ft232r: Debuglog non-FTDI device IDs found
- - Bugfix: Wait to release JSON result in case of JSON-RPC error until we've
- logged the error
- - Bugfix: RPC: Defer release of JSON until after cmd is used
- - Bugfix: Release JSON result in case of JSON-RPC error
- - Bugfix: Release job JSON result as soon as we are done using it
- - Bugfix: Release JSON received from RPC socket after we're done using it
- - Bugfix: Use clear_work and workdup everywhere work is copied around
- - Bugfix: Clear work before replacing it with new, to free any pointers
- - server and client sockaddr_in are no longer used in struct pool.
- - Set sshare id and swork_id within the sshare mutex to avoid multiple share
- submits with the same id.
- - Bugfix: Really use freeaddrinfo to clean up in extract_sockaddr
- - Update documentation for X6500
- - Bugfix: Free unused JSON returned when switching to Stratum
- - Bugfix: Free unused work when switching to Stratum instead
- - Bugfix: Use freeaddrinfo to clean up in extract_sockaddr
- - RPC: Include PGA support for X6500-only builds
- - RPC: Abstract code to handle any new device drivers as PGAs without special
- support
- - Bugfix: Release GBT submission JSON objects after dumping them
- - Bugfix: Free old stratum_work data before replacing it
- - Bugfix: Release memory allocated by prior stratum sockaddr extractions
- - Bugfix: Clear work template when preparing a new request
- - Bugfix: Initialize temporary stratum work
- - Bugfix: x6500: jtag_read buffer needs to be initialized since reading JTAG
- implies writing too
- - Replace now-redundant accepted_weighed with equivalent diff_accepted
- - Fail on select() failing in stratum thread without needing to attempt
- recv_line.
- - Add share to stratum database before sending it again in case we get a
- response from the pool before it's added.
- - Bugfix: modminer: Check that we have a valid fd before trying to start work
- - Shorten the initiate stratum connect timeout to 30 seconds.
- - Shorten the stratum timeout on read to 90 seconds to detect unresponsive pool.
- - Display best share difficulty on exit.
- - Make stratum socket fail more robust on windows by disabling the send buffer.
- - Reuse the same curl handle forcing a new connection instead of risking
- derefencing.
- - Add information about submission failure to stratum send.
- BFGMiner Version 2.9.0 - October 28, 2012
- - modminer: Remove dead code
- - Bugfix: Include headers in order needed for Mingw build
- - Bugfix: Save pool pointer to avoid dereferencing work after it might
- potentially be freed
- - Bugfix: Cleanup some harmless warnings
- - Bugfix: TUI: Avoid clearing the whole screen when we just want to clear the
- log window
- - Wishlist #130 implemented by "blinkier":
- - - Add all-at-once pool priority reassignment to curses TUI interface
- - - Save/restore pool priorities in config file
- - - Allow setting initial pool priorities via command line
- - Bugfix: Replace reportin hack with a reset back to LIFE_INIT for bitstream
- upload
- - Bugfix: SI kilo prefix is a lowercase "k"
- - Bugfix: If userpass is missing a password, treat it as a null password
- (regression fix)
- - Upgrade libblkmaker to 0.2.0
- - Bugfix: Build correct pay-to-scripthash script
- - Implement --coinbase-addr for solo mining
- - x6500: Since we program in about a minute now, only report status verbosely
- every 25%
- - x6500: Poll nonce less often since USB latency slows us down anyway
- - jtag: Avoid writing an extra readback byte when we are ignoring tdo anyway
- - ft232r: Set output buffer size to 4096 bytes
- - x6500: Adjust dynclock so it works more reasonably
- - x6500: Dynclock support
- - Provide a simple/dummy libusb_error_name when it is missing (libusb < 1.0.9)
- - x6500: Stop abusing pointer type to store bitstream upload progress
- - Bugfix: ft232r: Avoid reuse of USB device count variable
- - x6500: Implement basic hashrate prediction and efficient job completion
- - jtag: Optimized implementation of JTAG reads to workaround ft232r slowness
- - x6500: Try nonce with previous work if it is wrong for current
- - x6500: Ensure ft232r buffer is flushed to change registers
- - x6500: Start clock speed off at 180, and extra debugging for
- x6500_set_register
- - x6500: When programming, poll each FPGA status individually since they might
- not be ready at the same time
- - x6500: Various tweaks and hacks to get mining working
- - Bugfix: x6500: Remove erroneous bitendianflip
- - Bugfix: jtag: Handle ftdi-common environmental stuff properly
- - jtag: Defer ignored reads a bit to avoid USB latency
- - Bugfix: ft232r: First 2 bytes of every 0x40 are FTDI status or something
- - x6500: Implement mining protocols (doesn't work yet)
- - x6500: Cleanup dead code and implement bailout2
- - x6500: Clean up and finish FPGA initialization
- - x6500: Comment bitstream upload function better
- - fpgautils: Abstract open_xilinx_bitstream out from modminer and x6500 drivers
- - x6500: Get bitstream upload working
- - Bugfix: jtag: Use the correct bit for reading/writing data streams
- - ft232r: Buffer writes to improve performance
- - x6500: Get FPGA probe working
- - jtag: JTAG implementation for X6500 (over ft232r)
- - ft232r: ft232r_read_all function to simplify exact-length reads
- - ft232r: Implement read buffer so ft232r_read always works like read(2)
- - ft232r: Complete necessary interfaces for X6500
- - x6500: Bare minimum detection-only X6500 support via libusb
- - Minor debian packaging fixes.
- - Only add stratum share to database if we succeeded in submitting it, with a
- debug output saying it succeeded.
- - Use keepalive with stratum sockets to improve its ability to detect broken
- connections.
- - Show only the URL in the status bar to avoid long prefixes making for extra
- long lines.
- - Display compact status in menu and update README to reflect current menu
- entries.
- - Add a compact display mode that does not list per device statistics in the
- status window.
- - Add blank spaces after best share displayed.
- - Round a few static string arrays up to 4 byte boundaries for ARM.
- - Display best share diff for scrypt as well.
- - Show the best diff share as "best share" and add info to the README.
- - Display the best diff share submitted so far.
- - Redundant check.
- - The work struct pointer in struct pc_data in findnonce is never freed yet
- there is no need to allocate it separately so make struct work a static part of
- the struct pc_data. s
- - No longer should hide --no-restart option if OpenCL support is missing
- - Handle crash exceptions by trying to restart cgminer unless the --no-restart
- option is used.
- - Switch queued count when choosing a different pool from a failed stratum pool
- in getwork thread.
- - Put a mandatory 5s wait between reattempting a getwork on failure to avoid
- hammering requests.
- - Make sure to check pool stratum curl exists under lock before attempting any
- recv to not risk dereferencing upon attempting to reinitiate stratum.
- - Avoid redefining macros and align to 4 byte boundaries.
- - API - add Stratum information to pools
- - update FPGA-README for MMQ
- - Time for dynamic is in microseconds, not ms.
- - x86_64 builds of mingw32 are not supported directly and should just configure
- as generic mingw32 builds since they're NOT 64 bit.
- - Use 3 significant digits when suffix string is used and values are >1000.
- - Get rid of unused warning for !scrypt.
- - Use select on stratum send to make sure the socket is writeable.
- - Cope with dval being zero in suffix_string and display a single decimal place
- when significant digits is not specified but the value is greater than 1000.
- - Pad out the suffix string function with zeroes on the right.
- - Failure to calloc in bin2hex is a fatal failure always so just check for that
- failure within the function and abort, simplifying the rest of the code.
- - Provide locking around the change of the stratum curl structures to avoid
- possible races.
- - Bump opencl kernel version numbers.
- - Remove atomic ops from opencl kernels given rarity of more than once nonce on
- the same wavefront and the potential increased ramspeed requirements to use the
- atomics.
- - Clear the pool idle flag in stratum when it comes back to life.
- - Display correct share hash and share difficulty with scrypt mining.
- - Show work target diff for scrypt mining.
- - Watch for buffer overflows on receiving data into the socket buffer.
- - Dramatically simplify the dynamic intensity calculation by oversampling many
- runs through the opencl kernel till we're likely well within the timer
- resolution on windows.
- - Align static arrays to 4 byte boundaries to appease ARM builds for stratum.
- - Update documentation.
- - Left align values that are suffix_string generated.
- - Share_diff should not be converting the work data to hex.
- - Update readme describing difficulty displayed on log lines.
- - Off by one error.
- - Prevent overflows of the port char array in extract_sockaddr.
- - Disable stratum detection with scrypt.
- - Display the actual share diff next to the pool required diff, using a suffix
- creation function to prevent values of >1000 being shown in their entirety.
- - Fix 4 * 0 being 0 that would break dynamic intensity mode.
- - Supplement other 64-bit endian swap macros
- - Bugfix: Fix htobe64 on big endian platforms that don't define it
- - Fix lack of htobe64 on mingw32.
- - Reinstate the history on dynamic intensity mode to damp fluctuations in
- intensity but use an upper limit on how much the value can increase at any time
- to cope with rare overflows.
- - Update to cgminer's newer dynamic intensity algorithm
- - Support for the stratum mining protocol.
- - Simplify target generation code.
- - Add support for client.get_version for stratum.
- - Use a 64 bit unsigned integer on the diff target to generate the hex target.
- - Update reconnect message to show whole address including port.
- - Look for null values and parse correct separate array entries for url and port
- with client reconnect commands for stratum.
- - The command for stratum is client.reconnect, not mining.reconnect.
- - Only copy the stratum url to the rpc url if an rpc url does not exist.
- - Implement rudimentary mining.reconnect support for stratum.
- - Ignore the value of stratum_active on calling initiate_stratum and assume
- we're always trying to reinitiate it, and set the active flag to false in that
- function.
- - stratum auth can be unset if we fail to authorise on subsequent calls to
- auth_stratum which undoes the requirement of setting it in one place so set it
- in pool_active.
- - Format Stratum submission-start debug the same way as other submissions
- - Bugfix: Set work_restart_id in gen_stratum_work for when work is reused to
- avoid thinking it's all stale.
- - Only auto-switch to Stratum internally, but save HTTP URI in case pool stops
- using Stratum; also always shows original pool URI on RPC
- - SHUT_RDWR is now always defined for us, so no need to check ifdef on LP hang
- - Implement --no-stratum option to disable autodetection
- - Show Stratum pools as "Strtm" protocol in "Pool management" TUI
- - Bugfix: BFGMiner doesn't use rpc_proxytype
- - Remove free that could segfault.
- - Use the stratum url as the rpc url advertised if we switch to it.
- - Count an invalid nonce count as a hardware error on opencl.
- - Count each stratum work item as local work.
- - Cope with one stratum pool being the only active pool when it dies by sleeping
- for 5 seconds before retrying to get work from it instead of getting work
- indefinitely.
- - Detect stratum outage based on either select timing out or receiving an empty
- buffer and properly re-establish connection by disabling the stratum_active
- flag, coping with empty buffers in parse_stratum.
- - Fix various modminer warnings on mingw.
- - Fix sign warning on windows build for bitforce.
- - Cast socketfail to integer since SOCKET is an unsigned int on windows.
- - Use the stratum thread to detect when a stratum pool has died based on no
- message for 2 minutes.
- - Only set the stratum auth flag once and once the stratum thread is started,
- use that to set/unset the stratum active flag.
- - Only hand off to stratum from getwork if we succeed in initiating the
- protocol.
- - Target should only be 32 bytes copied.
- - Use a static array for work submission data instead of stack memory.
- - Clear the buffer data before sprinting to it.
- - Clear work stratum strings before setting them and add them to debug output.
- - Drop stratum connect failed message to verbose level only since it's a regular
- probing message.
- - TCP Keepalive in curl is only in very recent versions and not required with
- regular messages on stratum anyway.
- - Move stratum sockets to curl infrastructure with locking around send+recv to
- begin support for proxies and ssl.
- - Make detect stratum fail if a proxy has been set up.
- - Stratum does not currently have any proxy support so do not try to switch to
- stratum if a proxy has been specified.
- - Windows doesn't work with MSG_PEEK on recv so move to a continuously updating
- buffer for incoming messages.
- - Alloca is unreliable on windows so use static arrays in util.c stratum code.
- - Begin support for mingw stratum build.
- - Add space to reject reason.
- - Parse the reject reason where possible from stratum share submission.
- - Pass json error value to share result function to be able to parse reject
- reason in stratum.
- - Don't try to parse unneeded parameters in response to mining.subscribe.
- - Remove the sshare hash entry if we failed to send it.
- - Change notify message to info level to avoid spamming repeatedly when a pool
- is down.
- - Check the stratum pool difference has not changed compared to the work diff
- when testing whether a share meets the target or not and retarget if necessary.
- - Bit error in target calculation for stratum.
- - Offset the current block detection to the prev block hash.
- - We should be testing for id_val, not id in parse stratum response.
- - Make target on stratum scale to any size by clearing sequential bits according
- to diff.
- - Correct target calculation in gen_stratum_work.
- - If a share result has an error code but still has an id, it is likely a
- reject, not an error.
- - Initiate stratum the first time in pool_active only, allowing us to switch to
- it on getting a failed getwork and detecting the presence of stratum on the url
- at that time.
- - Use 5 second timeout on sock full for now as a temporary workaround.
- - If no stratum url is set by the end of the detect stratum routine, copy the
- sockaddr url.
- - Make all buffers slightly larger to prevent overflow.
- - Make the stratum recv buffer larger than the recvsize.
- - Userpass needs to be copied to user and pass earlier to allow stratum
- authorisation to work with it.
- - Store a sockaddr url of the stripped url used in determining sockaddr to not
- confuse it with the stratum url and fix build warnings.
- - Decrease the queued count with stratum work once it's staged as well.
- - Allow the stratum retry to initiate and auth stratum in pool_alive to make
- sure the stratum thread is started.
- - Avoid duplicating pool->rpc_url and setting pool->stratum_url twice to itself.
- - Detect if a getwork based pool has the X-Stratum header on startup, and if so,
- switch to the stratum based pool.
- - Comment update.
- - Minor message change.
- - Create a work item from a "clean" request from stratum allowing the new block
- to be detected and the appropriate block change message to be given.
- - Use statically allocated stratum strings in struct work to cope with the
- inability to safely deallocate dynamically allocated ram.
- - Use the current pool when deciding whether to reuse work from a stratum source
- rather than the work's previous pool.
- - Copy the stratum url to the rpc url to avoid none being set.
- - Provide locking around stratum send operations to avoid races.
- - Submit shares from stratum through the abstracted submit share function
- detecting what message they belong to and showing the data from the associated
- work, and then deleting it from the hash.
- - Use a more robust mechanism to obtain a \n terminated string over a socket.
- - Abstract out share submit as a function to be useable by stratum.
- - Rename parse_stratum to parse_method as it is only for stratum messages that
- contain methods.
- - Display stratum as mechanism in status line when current pool is running it.
- - Count each stratum notify as a getwork equivalent.
- - Correct nonce submitted with share.
- - Extranonce2 should be added before coinbase2.
- - We should be hashing the binary coinbase, not the hex one.
- - Fix endianness of nonce submitted for stratum.
- - Check that stratum is already active in initiate_stratum to avoid
- de-authorising ourselves by subscribing again.
- - Begin implementing a hash database of submissions and attempt sending results.
- - Copy parameters from stratum work required for share submission.
- - Set lagging flag on first adding a pool to prevent pool slow warning at
- startup.
- - Fix work->target being a 32 byte binary in gen_stratum_work.
- - Store and display stripped url in its own variable.
- - Create machinery to divert work requests to stratum.
- - Generate the work target in gen_stratum_work, setting default diff to 1 in
- case it is not yet set.
- - Generate work data, midstate and hash1 in gen_stratum_work.
- - Generate header created from stratum structures in gen_stratum_work.
- - Generate merkle root hash in gen_stratum_work.
- - Generate the coinbase for generation of stratum based work.
- - The number of transactions is variable so make merkle a variable length
- dynamically allocated array and track how many there are for stratum.
- - Rename nonce2 to n2size reflecting that it's a size variable and not the
- actual nonce.
- - Provide rudimentary support for stratum clean work command in the stratum
- thread.
- - Cope with pools being removed in the stratum thread.
- - Use the pool sock value directly in the stratum thread in case it changes
- after reconnecting.
- - Create a stratum thread per pool that has stratum that monitors the socket and
- serves received data.
- - Check return value of stratum_parse.
- - Complete authorisation in stratum.
- - Implement stratum parsing of notify parameters and storing them in the pool
- stratum work structure.
- - Create helper functions for duplicating json strings to avoid keeping json
- references in use.
- - Append \n in the sock_send function instead of adding it when constructing
- json in stratum.
- - Don't keep any json references around with stratum structures.
- - Create parse_stratum function that hands off stratum parameters to other
- functions to manage pool stratum work struct variables. Implement mining
- difficulty setting.
- - Create helper functions for checking when a socket is ready to read on and
- receive a single line at a time. Begin stratum authorisation process.
- - Provide a helper function for reading a single \n terminated string from a
- socket.
- - Create a stratum work structure to store current work variables.
- - Test specifically for stratum being active in pool_active.
- - Detect stratum in common place when adding urls, and use a bool to tell us
- when it's active.
- - Remove unused add_pool_details5
- - Fix warnings.
- - Extract and store various parameters on stratum init confirming successful
- mining notify.
- - Use existing socket macros and close the socket on failure in init stratum.
- - Initiate stratum and grab first json result.
- - Get detailed addressinfo from the parsed URL for future raw socket usage when
- possible. IPV4 only for now.
- - Prepare for getaddrinfo call.
- - Add data structures to pool struct for socket communications.
- - Put all socket definitions in util.h to allow reusing by added socket
- functions to be used in util.c.
- BFGMiner Version 2.8.3 - October 18, 2012
- - Update to libblkmaker 0.1.3
- - Use explicit host to BE functions in scrypt code instead of hard coding
- byteswap everywhere.
- - Ease the checking on allocation of padbuffer8 in the hope it works partially
- anyway on an apparently failed call.
- - Round target difficulties down to be in keeping with the rounding of detected
- share difficulties.
- - String alignment to 4 byte boundaries and optimisations for bin<->hex
- conversions.
- - Fix GPU memory allocation size for scrypt
- - Fix access violation with scrypt mining
- - Bugfix: Only free rpc_req after using it, not before
- - Bugfix: Increment work->pool->staged inside of mutex to avoid work being
- freed (and staged decremented) before we dereference it
- - Revert "No need for extra variable in hash_push.": The extra variable is
- needed to avoid a rare dereference-after-free error.
- - In opencl_free_work, make sure to still flush results in dynamic mode.
- - Workaround: Debug log only after dec_queued, to make a free/use race more
- rare
- - Bugfix: Remove redundant \n in debug messages
- - Bugfix: Free rpc_req in pool_active and longpolls
- - README: Explicitly provide Ubuntu package name for libjansson-dev
- - Bugfix: Include flash_led bool in cgpu_info for Icarus-but-not-BitForce
- builds, since Cairnsmore uses it
- - Only check work block id against pool's if the pool has a known block id
- - Avoid clearing pool->block_id unless we really are changing pools
- BFGMiner Version 2.8.2 - October 8, 2012
- - Update to libblkmaker 0.1.2
- - Bugfix: --temp-target no longer has a simple default (fixes build without
- OpenCL support)
- - Bugfix: icarus: Silence false epoll error
- - Bugfix: icarus: Set firstrun for errors starting next job, so the current
- one finishes properly
- - Bugfix: icarus: Restore generic failure management for write errors
- - Use strtod not strtol for bitforce temp backup.
- - Cope with broken drivers returning nonsense values for bitforce temperatures.
- - Minor warning fixes.
- - Fix unused warnings on ming build.
- - Fix sign warning in ocl.c
- - fds need to be zeroed before set in modminer.
- - Put scrypt warning on separate line to avoid 0 being shown on windows as
- bufsize.
- - Prevent corrupt values returned from the opencl code from trying to read
- beyond the end of the buffer by masking the value to a max of 15.
- - Icarus USB write failure is also a comms error
- - api.c DEBUG message has no paramter
- - Icarus catch more USB errors and close/reopen the port
- - API-README update cgminer verison number
- - hashmeter fix stats kh/s on 32bit windows
- - cairnsmore: Increase maximum clock frequency to 210 Mhz
- - icarus: Hashrate estimates really don't need the attention of a warning,
- demote them to debug
- - cairnsmore: Automatically "downgrade" default FPGA-per-device to 1 for
- dynclock devices
- - Bugfix: cairnsmore: Get autodetection of dynclock to work consistently
- - cairnsmore: Adjust dynclock usage to react in proper time
- - dynclock: Document function usage
- - cairnsmore: Fix race on dynclock detection
- - icarus: Detect attempts to send commands via work and neuter them
- - cairnsmore: Glasswalker has a minimum multiplier of 20 :(
- - cairnsmore: Detect frequency changing support despite hashing of commands
- - modminer: Allow clocks down to 2 Mhz just in case
- - Allow device drivers and users to properly change target temperatures for
- non-GPUs
- - Check that ncurses*-config installs actually work before deciding to use
- them
- - Bugfix: Fix multiple bugs in autogen.sh
- - - Don't use readlink -f unneccesarily (it's not portable)
- - - Always run autoreconf within the real source directory
- - - Run configure from PWD, *not* the real source directory
- - Bugfix: Include nonce in data buffer for debugging
- - Bugfix: swap32* wants count of 32-bit blocks, not bytes
- - Initial Cygwin port
- - Revert "Remove needless roundl define.", since it is needed for Cygwin and
- OpenWRT
- - Bugfix: Deal with various compiler warnings
- - modminer: Implement --temp-hysteresis logic
- - Support for maximum frequency being below the default, eg when the maximum
- is temporarily reduced to deal with temperature
- - Bugfix: modminer: Reduce dynclock max frequency as needed to keep
- temperature below cutoff
- - Bugfix: Restore disabled label, needed to skip over hashrate calculations
- (which mess up otherwise)
- - Bugfix: bitforce: Count actual throttling as hardware errors
- - icarus: Allow failure in case of reopen failure, now that the miner core
- will retry on its own
- - If a device dies, attempt to reinitialize it occasionally
- - Bugfix: The REST flag is now preferred over WAIT, since the former might
- trigger the latter
- - Bugfix: modminer: Update temperature readings when disabled (fixes thermal
- cutoff recovery)
- - Bugfix: Move thermal cutoff to general watchdog code (fixes bitforce
- recovery)
- - Rename enable_device to register_device, since it only works for setting it
- up at startup
- - Move targettemp from ADL to cgpu_info, so all devices can readily use it
- - Bugfix: "REST" flag had too much padding
- - Bugfix: adl: Only warn and disable GPU due to thermal cutoff, if it's
- actually enabled
- - Bugfix: bitforce: Only warn and disable bitforce due to thermal cutoff, if
- it's actually enabled
- BFGMiner Version 2.8.1 - September 27, 2012
- - Avoid strndup for Windows compatibility
- - Bugfix: cairnsmore: Add missing compat.h include (for sleep)
- - cairnsmore: Implement "identify" for supported firmware
- - Adjust identify_device API to return a bool whether supported or not, for
- runtime capability detection
- - Bugfix: cairnsmore: Fix invalid share detection on LE
- - Bugfix: icarus: Fix logging message to not assume "Icarus" always, and use
- device driver name
- - Bugfix: cairnsmore: Correct frequency scaling detection logic
- - cairnsmore: When changing frequency, adjust Hs expectations accordingly
- - cairnsmore: Detect availability of frequency scaling, and only enable it
- when supported
- - cairnsmore: Implement dynamic clocking support for Glasswalker's bitstream
- - Update libblkmaker to 0.1.1
- - Advertise BFGMiner in blocks found by default (without --coinbase-sig)
- - RPC: Add "Coinbase-Sig" to config/setconfig
- - New --coinbase-sig option to add arbitrary data to blocks you generate (GBT
- only)
- - opencl: Defer nonce validity checking to submit_nonce
- - scrypt: Implement test_nonce2 and submit_nonce hw error check
- - Bugfix: modminer: Convert nonce to native endian
- - Interpret any attempts to submit a H-not-zero nonce as a hardware error
- - make-release: Strip DLLs and EXE in Windows binary
- - dynclock: Use consistent messages for frequency changes
- - modminer: Port to dynclock
- - dynclock: Split dynamic clocking algorithm out of Ztex driver
- - Bugfix: When changing GPU memclock, adjust internal variable so it is
- correctly saved to config file
- - Bugfix: Re-probe longpoll header for each pool alive check, including
- retries when a preferred protocol fails
- - Bugfix: modminer: Bitstream binary filenames are *.bit
- - modminer: Start frequency off at 200 Mhz
- - Reorder libztex header include order to fix missing struct definition.
- - Display share difficulty on log with a shortened hash display on submission.
- - API stats add some pool getwork difficulty stats
- - Ignore any pings pushed to the worker threads if the thread is still paused to
- prevent it being enabled and disabled repeatedly.
- - Test for sequential getwork failures on a pool that might actually be up but
- failing to deliver work as we may end up hammering it repeatedly by mistake.
- - reduce windows compile warnings
- - util.c - bug - proxy - no data end condition
- - API don't change 'Diff1 Shares' - backward compatability FTW
- - miner.php highlighting correctly handling difficulty
- - API - Add last share difficulty for devices and pool
- - Store and report Accepted,Rejected,Stale difficulty in the summary and API
- - WorkTime - display prevblock for scrypt
- - api.c remove compile warnings
- - Calculate work difficulty for each getwork and display with WorkTime debug
- - FPGA - allow long or short device names in detect code + style police
- - WorkTime - multiple nonce per work and identify the work source
- - Optional WorkTime details with each Accepted/Rejected work item
- - Icarus - ignore hardware errors in timing mode
- - miner.php oops - mistype
- - API pgaidentify - unsupported message should be a warning
- - API/BFL identify a device - currently only BFL to flash the led
- - BFL add throttle count to internal stats + API
- - BFL: missing device id in log message
- - Bugfix: ztex: Clear device_ztex before freeing it
- - Bugfix: ztex: statline existence depends on whether the libztex structure
- exists, not whether the cgpu is enabled
- - Bugfix: README: Make usermod commands consistent, including important -a
- option
- - Bugfix: Address a couple of rare TQ leaks, and improve logging a bit
- - Bugfix: Properly quote configure options
- BFGMiner Version 2.8.0 - September 15, 2012
- - Be specific about jansson version requirement
- - Replace "Alive" in pool status with protocol in use (GBT or GWork)
- - Remove copy of old jansson from source repository
- - Honour block template expiry (BIP 23 Basic Pool Extensions "expires")
- - Add --no-gbt option so getblocktemplate can be disabled if it causes
- problems
- - BIP 22 long polling
- - Properly detect pool protocol
- - Bugfix: Sort out work template refcounting by properly using work_free and
- new workcpy
- - Support for rolling extranonce in templates
- - Initial libblkmaker integration, using a git submodule
- - cairnsmore: There's no set hashrate like Icarus, so always use short timing
- mode by default
- - Bugfix: Include unistd.h needed for ssize_t type
- - fpgautils: Don't try to scan serial at all anymore, if a device is claimed
- - fpgautils: serial_claim function to politely ask other drivers not to try to
- use device
- - RPC: Update to work with Cairnsmore
- - cairnsmore: Windows autodetect using FTDI library
- - cairnsmore: Beginnings of new driver, with automatic upgrade from Icarus
- detection
- - icarus: Support disabling reopen quirk via --icarus-options
- - proxy: Replace mess of encoding proxy into pool URI with a --pool-proxy
- option, and use cURL's builtin proxy URI support
- - save individual pool proxy settings to config
- - API-README update for pools proxy info
- - CURL support for individual proxy per pool and all proxy types
- - Bugfix: Update current_block_id for fixed set_curblock
- - miner.php by default don't display IP/Port numbers in error messages
- - api.c all STATUS messages automatically escaped
- - API add display of and setting queue,scantime,expiry
- - README - FPGA device FAQ
- - API add device diff1 work
- - count device diff1 shares
- - API-README update
- - api.c Correct diff1 field name
- - Bugfix: Sanitize block hash handling (including fixing on big endian)
- - Bugfix: Print the (full) correct block hash when warning about work issued
- against old blocks
- - Bugfix: When comparing current block, only pay attention to the prevblock
- header
- - Allow mixing user+pass and userpass, so long as user+pass are balanced
- before userpass options
- - ztex: Include device serial number and FPGA number in cgpu name field
- - ztex: Abstract common cgpu_info creation code
- - ztex: Do thread initialization in thread_init rather than thread_prepare
- - Bugfix: Tolerate working on old blocks when there is only one pool enabled
- - Bugfix: ztex: Detect through fpgautils so -S noauto correctly inhibits
- autodetection
- - ztex: Workaround duplicate share submissions by doubling "backlog" size
- - ztex: Use consistent device ids for logging
- - Bugfix: ztex: Increment global hw_errors too
- - Bugfix: free adhoc string elist element when removing it from list
- - Bugfix: icarus: Initialize lret variable after work restart reentry
- - Bugfix: ztex: Free lastnonce heap memory if backlog allocation fails
- - icarus: Initialize epoll event structure in a way Valgrind is happier with
- - Bugfix: Use strtok_r for parse_config since some options use strtok
- themselves
- - Import strtok_r from gnulib for Windows portability
- - Bugfix: ztex: Don't try to destroy a mutex that was never created (single
- FPGA Ztex devices)
- - ztex: Clean up redundant dereferencing in ztex_shutdown
- - API-README more debug parameter information
- - API allow full debug settings control
- - Sort the blocks database in reverse order, allowing us to remove the first
- block without iterating over them. Output the block number to debug.
- - Adjust opencl intensity when adjusting thread count to prevent it getting
- pegged at a value below the minimum threads possible.
- - miner.h max_hashes -> int64_t
- - Keep the local block number in the blocks structs stored and sort them by
- number to guarantee we delete the oldest when ageing the block struct entries.
- - Use correct sdk version detection for SDK 2.7
- - Bugfix: Align Ztex statline properly by removing redundant frequency
- - make-release: Convert text files to DOS format for Windows ZIP
- BFGMiner Version 2.7.5 - August 27, 2012
- - Revert "Do a complete cgminer restart if the ATI Display Library fails, as
- it does on windows after running for some time, when fanspeed reporting
- fails."
- - Stop special-casing worksize default to 256 for Cypress, since it incurs a 5
- MH/s hit with stock config
- - New "--scan-serial all" feature to probe all enumerated serial ports
- - modminer: Revamp dynamic clocking algorithm per request from cablepair
- - Test for lagging once more in queue_request to enable work to leak to backup
- pools.
- - There is no need to try to switch pools in select_pool since the current pool
- is actually not affected by the choice of pool to get work from.
- - Only clear the pool lagging flag if we're staging work faster than we're using
- it.
- - needed flag is currently always false in queue_request. Remove it for now.
- - thr is always NULL going into queue_request now.
- - Fix for non-ADL OpenCL device formatting issue
- BFGMiner Version 2.7.4 - August 23, 2012
- - Perform select_pool even when not lagging to allow it to switch back if needed
- to the primary.
- - Simplify macros in output kernels avoiding apparent loops and local variables.
- - Carry the needed bool over the work command queue.
- - Move the decision to queue further work upstream before threads are spawned
- based on fine grained per-pool stats and increment the queued count immediately.
- - Track queued and staged per pool once again for future use.
- - OpenCL 1.0 does not have native atomic_add and extremely slow support with
- atom_add so detect opencl1.0 and use a non-atomic workaround.
- - Pools: add RollTime info to API 'stats' and 'Stats' button in miner.php
- BFGMiner Version 2.7.3 - August 23, 2012
- - Minimise the number of getwork threads we generate.
- - Pick worksize 256 with Cypress if none is specified.
- - Give warning with sdk2.7 and phatk as well.
- - Whitelist sdk2.7 for diablo kernel as well.
- - Only keep the last 6 blocks in the uthash database to keep memory usage
- constant. Storing more is unhelpful anyway.
- - Increase kernel versions signifying changed APIs.
- - BFL flash - more FPGA-README
- - Check we haven't staged work while waiting for a curl entry before proceeding.
- - Use atomic ops to never miss a nonce on opencl kernels, including nonce==0,
- also allowing us to make the output buffer smaller.
- - Remove compile errors/warnings and document compile/usage in FPGA-README
- - Ignore the submit_fail flag when deciding whether to recruit more curls or not
- since we have upper bounds on how many curls can be recruited, this test is
- redundant and can lead to problems.
- - API-README update cgminer version number
- - API-README fix groups P: example mistake
- - API-README add COIN and other edits
- - miner.php allow 'coin' is custom pages
- BFGMiner Version 2.7.1 - August 22, 2012
- - Update windows build instructions courtesy of sharky.
- - Increase max curls to number of mining threads + queue * 2, accounting for up
- and downstream comms.
- - Queue enough requests to get started.
- - There is no point trying to clone_work in get_work() any more since we clone
- on every get_work_thread where possible.
- - There is no point subtracting 1 from maxq in get_work_thread.
- - miner.php allow page title to be defined in myminer.php
- - Only set lagging flag once there are no staged work items.
- - select_pool does not switch back to the primary once lagging is disabled.
- - Increment total work counter under mutex lock.
- - Increment the queued count after the curl is popped in case there's a delay
- waiting on curls and we think we've queued work when in fact we're waiting on
- curls.
- - Do the dynamic timing in opencl code over a single pass through scanhash to
- make sure we're only getting opencl times contributing to the measured
- intervals.
- - Increase curl reaping time to 5 minutes since comms between curl requests can
- be 2 mins apart with lots of rolltime.
- - No need for extra variable in hash_push.
- - Remove short options -r and -R to allow them to be reused and remove readme
- entries for deprecated options.
- - Deprecate the opt_fail_pause parameter, leaving a null placeholder for
- existing configurations.
- - Free work before retrying in get_work_thread.
- - Don't pause after failed getwork, set lagging flag and reassess.
- - We should not be pausing in trying to resubmit shares.
- - Get rid of the extending fail pause on failed connects since we discard work
- after a period.
- - get_work always returns true so turn it into a void function.
- - get_work never returns false so get rid of fail pause loop.
- - Get rid of pause and retry from get_upstream_work so we only do it from one
- place.
- - Remove all cases where --retries aborts BFGMiner, making it for submission
- retries only, where it makes sense.
- BFGMiner Version 2.7.0 - August 21, 2012
- - Implement a new pool strategy, BALANCE, which monitors work performed per pool
- as a rolling average every 10 minutes to try and distribute work evenly over all
- the pools. Do this by monitoring diff1 solutions to allow different difficulty
- target pools to be treated equally, along with solo mining. Update the
- documentation to describe this strategy and more accurately describe the
- load-balance one.
- - fpga serial I/O extra debug (disabled by default)
- - Getwork fail was not being detected. Remove a vast amount of unused variables
- and functions used in the old queue request mechanism and redefine the getfail
- testing.
- - Consider us lagging only once our queue is almost full and no staged work.
- - Simplify the enough work algorithm dramatically.
- - Only queue from backup pools once we have nothing staged.
- - Don't keep queueing work indefinitely if we're in opt failover mode.
- - Make sure we don't opt out of queueing more work if all the queued work is
- from one pool.
- - Set lagging flag if we're on the last of our staged items.
- - Reinstate clone on grabbing work.
- - Grab clones from hashlist wherever possible first.
- - Cull all the early queue requests since we request every time work is popped
- now.
- - Keep track of staged rollable work item counts to speed up clone_available.
- - Make expiry on should_roll to 2/3 time instead of share duration since some
- hardware will have very fast share times.
- - Check that we'll get 1 shares' worth of work time by rolling before saying we
- should roll the work.
- - Simplify all those total_secs usages by initialising it to 1 second.
- - Overlap queued decrementing with staged incrementing.
- - Artificially set the pool lagging flag on pool switch in failover only mode as
- well.
- - Artificially set the pool lagging flag on work restart to avoid messages about
- slow pools after every longpoll.
- - Factor in opt_queue value into enough work queued or staged.
- - Roll work whenever we can on getwork.
- - Queue requests for getwork regardless and test whether we should send for a
- getwork from the getwork thread itself.
- - Get rid of age_work().
- - Don't try to get bitforce temperature if we're polling for a result to
- minimise the chance of interleaved responses.
- - Fix harmless unused warnings in scrypt.h.
- - Check we are not lagging as well as there is enough work in getwork.
- BFGMiner Version 2.6.5 - August 20, 2012
- - API new command 'coin' with mining information
- - Add message to share if it's a resubmit.
- - Add virtual adl mapping for when none is specified on the command line to
- not crash without a map specified.
- - Fix ADL gpu-map not working when there are more ADL devices than openCL.
- Patch supplied and tested by Nite69.
- - bitforce: Initial import of Linux-only bitforce-firmware-flash utility
- - Revert stale-on-arrival failsafe, since it ends up needing exceptions for
- everything
- - Bugfix: opencl: Declare opencl_dynamic_cleanup in header
- - Even if we want to submit stale shares, give up if we have more submissions
- waiting on threads (even before failing)
- - Even if we want to submit stale shares, give up if they've failed and we
- have more submissions waiting on threads
- - opencl: Use timeBeginPeriod on Windows to ensure gettimeofday has sufficient
- precision for dynamic intensity
- - Bugfix: opencl: Move ADL fanspeed warning messages to a new thread to get
- around summary-update deadlocking
- - README: Note that user groups don't get updated until re-login
- - Initialise cnt in libztex.c
- - Don't try to start devices that don't support scrypt when scrypt mining.
- - Repeating on timeout in ztex could make the code never return.
- - Offset libusb reads/writes by length written as well in ztex.
- - Cope with timeouts and partial reads in ztex code.
- - If there are more devices than nDevs, don't iterate over them as they may
- overwrite devices mapped below that with the mapping option.
- - Fix README faq on bfl auto-detect.
- - Set memory clock based on memdiff if present from with engine changes,
- allowing it to parallel manual changes from the menu as well.
- - api.c typo
- - API allow display/change failover-only setting
- - API-README corrections
- - miner.php documentation (in API-README) v0.1
- - Bugfix: opencl: Show blank device-info statline area if GPU doesn't have
- ADL, to fix column alignment
- - README: Document usage of 0 to indicate "leave at default" for comma-
- delimited GPU options
- - Correct API-README versions to match when BFGMiner included them
- - API-README update changelog
- - Minimise locking and unlocking when getting counts by reusing shared mutex
- lock functions.
- - Avoid getting more work if by the time the getwork thread is spawned we find
- ourselves with enough work.
- - The bitforce buffer is cleared and hw error count incremented on return from a
- failed send_work already so no need to do it within the send_work function.
- - Don't make mandatory work and its clones last forever.
- - modminer: Log debug info for nonces found
- BFGMiner Version 2.6.4 - August 11, 2012
- - Bugfix: Define my_cancellable_getch in miner.h
- - Escape " and \ when writing json config file
- - miner.php allow a custom page section to select all fields with '*' - e.g. to
- create a STATS section on a custom page
- - miner.php optional single rig totals (on by default)
- - Bugfix: Initialize submitting mutex
- - Bugfix: bitforce: Allocate enough space for FTDI description pointers
- - Queue one request for each staged request removed, keeping the staged
- request count optimal at all times.
- - Bugfix: Avoid cancelling threads while locks are held
- - Set recognizable names on threads for debugging
- - Bugfix: Don't keep making new get_work threads if all pools are dead
- - Enable configuring submission thread limit with --submit-threads option
- - Bugfix: Limit active submission threads to 0x40 so we don't overflow
- - Bugfix: Properly handle switching to pools that aren't on the latest block,
- and warn if a pool actively switches to an old block
- - Log more details of reasons in stale_work debug messages
- - Failsafe against stale-on-arrival work: disable the pool
- - Bugfix: Debug message should show "Work stale due to work restart" when it's
- not a share
- - windows-build: Remove APP SDK section since it is no longer needed
- - modminer: HACK: Let last_work handle the end of the work, and start the next
- one immediately
- - Bugfix: modminer: Remove erroneous "else" statement, to fix hashrate
- reporting
- - README: Document user group required for FPGAs on Gentoo and Ubuntu
- - BFGMiner-specific README adjustments
- - Bugfix: opencl: Ignore error getting device ids from platforms unless they
- are explicitly chosen
- - New --debuglog option to include debug info in stderr logfile even if not in
- the console
- - Bumped down debhelper compatibility reqs so that this will build on Lucid.
- - Updated to match packaging changes.
- - Switched to native packages so we don't have to muck around creating fake
- upstream tarballs, and can easily generate minor versions for upload to
- Launchpad.
- - Removed accidentally included debugging line.
- - Minor version bump again because of launchpad. Will sort this out for next
- release.
- - Updated to patch bitforce module issue on Debian/Ubuntu.
- - Added local quilt config dir to ignore.
- - modminer: Check nonce against previous work, in case of race
- - Bugfix: Enable --kernel-path option if ModMiner or Ztex is enabled (even if
- no OpenCL)
- - Bugfix: Escape backslashes and double-quotes in strings that rightfully may
- have them, when writing JSON config file
- - Clean object (.o) and dependency (.d) files out of source tree
- - Bugfix: bitforce: Don't count hashes that never happened due to throttling
- - Bugfix: Deal with serial_open timeout maximum (25.5s)
- - - fpgautils: Linux only supports uint8_t decisecond values for timeouts, so
- use uint8_t for timeout value; this gets smart compilers to throw warnings
- when overflowed in some cases
- - - bitforce: Reduce serial timeout to 25 seconds (was 30) and increase job
- long timeout to 25 seconds (was 15) to handle throttling gracefully
- - modminer: Add debug info to API extra device stats
- - modminer: Raise clock speed when there's only good nonces for a while
- - modminer: Only print clock speed adjustments when they actually change
- - modminer: Increase tolerance for bad nonces to 2%
- - modminer: Reset bad-nonce ratio measurement when the clock speed changes
- - Bugfix: bitforce: Include the correct device id in "garbled response" warning
- - ADL: Add attribution and disclaimer to interfaces
- - Cleaned out refs to AMD SDKs.
- - Updated README about debian packaging, changelog with minor version bump to
- work around Launchpad reqs.
- - Updated changelog with Ubuntu release specific version, needed to build for
- multiple releases. Also stripped out ADL SDK stuff in the build rules.
- - Initial work to adjust debian packaging from cgminer. Should build correctly
- now with pbuilder/pdebuild, and include docs.
- - Adapt miner code to free ADL structures
- - Import free ADL interfaces
- - Include scrypt.h in Makefile.
- - Fix windows bitforce build.
- - Convert the serial autodetect functions to use int instead of char to
- enumerate devices.
- - Uglify windows autodetect code for BFL.
- - There is no point zeroing temperature in BFL if we fail to get a response, and
- we should register it as a HW error, suggesting throttling.
- - Update SCRYPT README with information about HW errors.
- - Use the scrypt CPU code to confirm results from OCL code, and mark failures as
- HW errors, making it easier to tune scrypt parameters.
- - We may as well leave one curl still available per pool instead of reaping the
- last one.
- - Display reaped debug message outside mutex lock to avoid recursive locking.
- - api.c update API start message and include port number
- - miner.php ignore arg when readonly
- - miner.php allow pool inputs: delete, addpool, poolpriority
- - bitforce: Reopen on communication error
- - Bugfix: Calculate hw err percent for the affected FPGA only
- - make-release: Adapt to new autogen by using NOCONFIGURE var
- BFGMiner Version 2.6.3 - August 6, 2012
- - modminer: Relax no-nonces downclocking condition to be more reasonable
- - README: Update scrypt configure option
- - README: Update configure options
- - Bugfix: Display --disable-modminer in configure --help now that it is
- enabled by default
- - Add specific information when ADL detects error -10 saying the device is not
- enabled.
- - modminer: Shorten upload warning message to fit better
- - modminer: Sending a "ping" first, to workaround bug in new firmware betas
- - modminer: Include Hardware Errors and Valid Nonces in extra device status
- - Bugfix: modminer: Calculate bad-nonce percentage based only on the same
- FPGA's hardware errors, accurately
- - modminer: Show bitstream upload progress in statline, and only report to log
- every 10%
- - modminer: Be more verbose about why the clock is getting reduced
- - Document how Icarus golden nonce is handled by other FPGAs
- - Rewrite should_run for sched, to properly handle one-shot schedules spanning
- midnight
- - Bugfix: Check list_empty in pop_curl_entry after condition wait
- - Bugfix: Only add new pools to array after completing basic structure
- initialization
- - If __BFGMINER_SEGFAULT_ERRQUIT is set in the environment, segfault on
- non-zero quit()s
- - Check against NULL pointers getting into curlring
- - modminer: Finish a process results run with a nonce poll, rather than sleep
- - modminer: Workaround Windows driver failures
- - Count likely throttling episodes on bitforce devices as hardware errors.
- - Bugfix: bitforce: Increase serial read timeout to 30 seconds during actual
- mining, to tolerate more throttling
- - Style cleanups.
- - Make pool_disabled the first in the enums == 0, fixing the pool enabled count
- which compares if value is not enabled before enabling it.
- - Correct writing of scrypt parameters to config file based on command line
- parameters only.
- - Add scrypt support while writing conf
- - Use different variables for command line specified lookup gap and thread
- concurrency to differentiate user defined versus auto chosen values.
- - Queue a request on pool switch in case we have no work from the new pool yet.
- - API remove unused warning in non-GPU compile
- - api.c in linux allow to open a closed socket in TIME_WAIT
- - Display failover only mode in pool menu and allow it to be toggled live.
- - Reinstate check for system queueing lag when the current pool's queue is maxed
- out, there is no staged work, and the work is needed now.
- - Fix harmless warnings.
- - Check the current staged and global queued as well before queueing requests.
- Discard stales before ageing work in the watchdog thread. Queue requests after
- discarding and ageing work in watchdog thread. Display accurate global queued in
- curses output. Reuse variable in age_work().
- - The queueing mechanism has become a complex state machine that is no longer
- predictable. Rewrite it from scratch watching only current queues in flight and
- staged work available on a pool by pool basis.
- - Update debian package configs to v2.6.2
- - Queue an extra request whenever staged work drops below mining thread count in
- hash_pop.
- - Bugfix: Initialize logwin to 1 line high temporarily, to avert PDCurses crash
- - Enable FPGA support by default, as long as their dependencies are met
- - Bugfix: modminer: Search for *ModMiner* in udev ID_MODEL
- - make-release: build with --enable-scrypt
- - miner.php support custom report section joins
- - ICA default fpga_count to work_division if specified
- - FPGA-README document new hidden --icarus-options
- - ICA support 57600 baud rate, up to 8 FPGA and partial working FPGA boards
- - Scrypt mining does not support block testing yet so don't try to print it.
- - Clear the bitforce buffer whenever we get an unexpected result as it has
- likely throttled and we are getting cached responses out of order, and use the
- temperature monitoring as a kind of watchdog to flush unexpected results.
- - It is not critical getting the temperature response in bitforce so don't
- mandatorily wait on the mutex lock.
- - Check there is a cutoff temp actually set in bitforce before using it as a cut
- off value otherwise it may think it's set to zero degrees.
- - We dropped the temporary stopping of curl recruiting on submit_fail by
- mistake, reinstate it.
- - Make threads report in either side of the scanhash function in case we miss
- reporting in when restarting work.
- - Add debugging output when work is found stale as to why.
- - Print the 3 parameters that are passed to applog for a debug line in
- bitforce.c
- - Clear bitforce buffer on init as previously.
- - Add some headroom to the number of curls available per pool to allow for
- longpoll and sendwork curls.
- - Show the correct base units on GPU summary.
- - Bugfix: bitforce: 1 decisecond timeout is unreasonably short, give it a
- second
- - Bugfix: Don't try to log abandon time, since we aren't keeping track
- reasonably
- - Import uthash 1.9.6
- - Bugfix: bitforce: Pause after send_work failures
- - Fix comm error handling to not consider work restarts an error condition
- - comm error bug fix
- - Bugfix: No endian.h on Windows
- - Remove unused mkinstalldirs
- - Display scrypt as being built in as well.
- - Fix build warning about KL_SCRYPT when built without scrypt support.
- - News update.
- - More scrypt intensity information.
- - Minor readme updates.
- - Update README with more build instructions.
- - Remove the low hash count determinant of hardware being sick. A low hash rate
- can be for poor network connectivity or scrypt mining, neither of which are due
- to sick hardware.
- - Style
- - API-README poolpriority changes
- - api.c verify poolpriority parameters before changing pools
- - api.c poolpriority changes
- - Implement shared swap32(yes|tole|tobe) function to handle endian flipping
- 32-bit chunks in blocks
- - Use correct macros for endian handling code
- BFGMiner Version 2.6.1 - July 29, 2012
- - Autoselect --scrypt iff all pools send scrypt work
- - Adapt SCRYPT-README to BFGMiner (directing Bitcoin donations the correct
- direction to reach Con)
- - Remove mentions of Litecoin specifically
- - Bugfix: Fix build without OpenCL but with scrypt
- - make-release: Add SCRYPT-README
- - Bump version 2.6.0, adding SCRYPT README to makefile.
- - Smarter autogen.sh script.
- - Sleeping on intensity decrease is broken, remove it.
- - Sleep only the extra amount of time we overran the dynamic interval in dynamic
- mode.
- - Add scrypt documentation in the form of a separate readme.
- - Fix build error without scrypt enabled.
- - Limit thread concurrency for scrypt to 5xshaders if shaders is specified.
- - Simplify repeated use of gpus[gpu]. in ocl.c
- - Find the nearest power of 2 maximum alloc size for the scrypt buffer that can
- successfully be allocated and is large enough to accomodate the thread
- concurrency chosen, thus mapping it to an intensity.
- - Don't make opt_scrypt mandatory blocking with opencl code.
- - Update kernel versions reflecting changes in the API.
- - Make the thread concurrency and lookup gap options hidden on the command line
- and autotune parameters with a newly parsed --shaders option.
- - Fix target testing with scrypt kernel as it would have been missing shares
- below target.
- - Always create the largest possible padbuffer for scrypt kernels even if not
- needed for thread_concurrency, giving us some headroom for intensity levels.
- - Use the detected maximum allocable memory on a GPU to determine the optimal
- scrypt settings when lookup_gap and thread_concurrency parameters are not given.
- - Check the maximum allocable memory size per opencl device.
- - Add debugging output if buffer allocation fails for scrypt and round up
- bufsize to a multiple of 256.
- - Nonce testing for btc got screwed up, leading to no accepted shares. Fix it.
- - Display size of scrypt buffer used in debug.
- - Allow intensities up to 20 if scrypt is compiled in.
- - Add name to scrypt kernel copyright.
- - Allow lookup gap and thread concurrency to be passed per device and store
- details in kernel binary filename.
- - Ignore negative intensities for scrypt.
- - Change the scale of intensity for scrypt kernel and fix a build warning.
- - Correct target value passed to scrypt kernel.
- - Use 256 output slots for kernels to allow 1 for each worksize.
- - Test the target in the actual scrypt kernel itself saving further
- calculations.
- - Reinstate GPU only opencl device detection.
- - Decrease lookup gap to 1. Does not seem to help in any way being 2.
- - Fix build.
- - Make pad0 and pad1 local variable in scrypt kernel.
- - Constify input variable in scrypt kernel.
- - Send correct values to scrypt kernel to get it finally working.
- - Create command queue before compiling program in opencl.
- - Fix external scrypt algo missing.
- - Limit scrypt to 1 vector.
- - Handle KL_SCRYPT in config write.
- - Get rid of stuff.
- - Don't enqueuewrite buffer at all for pad8 and pass work details around for
- scrypt in dev_blk.
- - Set the correct data for cldata and prepare for pad8 fixes.
- - Get rid of spaces in arrays in scrypt kernel.
- - Start with smaller amount of hashes in cpu mining to enable scrypt to return
- today sometime.
- - Free the scratchbuf memory allocated in scrypt and don't check if CPUs are
- sick since they can't be. Prepare for khash hash rates in display.
- - Add cpumining capability for scrypt.
- - Set scrypt settings and buffer size in ocl.c code to be future modifiable.
- - Cope with when we cannot set intensity low enough to meet dynamic interval by
- inducing a forced sleep.
- - Make dynamic and scrypt opencl calls blocking.
- - Fix nonce submission code for scrypt.
- - Make sure goffset is set for scrypt and drop padbuffer8 to something
- manageable for now.
- - Set up buffer8 for scrypt.
- - Build fix for opt scrypt.
- - Don't check postcalc nonce with sha256 in scrypt.
- - Don't test nonce with sha and various fixes for scrypt.
- - Make scrypt buffers and midstate compatible.
- - Use specific output array entries in scrypt kernel.
- - Provide initial support for the scrypt kernel to compile with and mine scrypt
- with the --scrypt option.
- - Enable completely compiling scrypt out.
- - Begin import of scrypt opencl kernel from reaper.
- BFGMiner Version 2.5.3 - July 29, 2012
- - Bugfix: Add zlib1.dll to Win32 release archive
- - Bugfix: SICK low-hashrate is now determined by being under 1/3 the runtime
- average hashrate
- - Bugfix: cpu_set_t is never #defined, so use CPU_ZERO which is a macro
- BFGMiner Version 2.5.2 - July 29, 2012
- - Limit total number of curls recruited per pool to the number of mining threads
- to prevent blasting the network when we only have one pool to talk to.
- - Bugfix: Skip writing configuration of range-limited int options with negative
- values
- - Bugfix: Correctly attempt to load ~/.bfgminer/bfgminer.conf or
- ~/.cgminer/cgminer.conf as defaults
- - Send X-Minimum-Wait header on longpolls, to explicitly inform pools we will
- handle a response with no delay
- - bitforce: Abandon (only) stale searches for work restarts
- - Keep a counter of enabled pools and use that instead of iterating over the
- pool list. Use that value to ensure we don't set the last remaining active pool
- to the rejecting state.
- - bitforce: Skip out of sending work if work restart requested
- - RPC: Writeup on poolpriority command usage
- - Bugfix: API: Report errors from poolpriority command
- - RPC: New "poolpriority" command to set the order of pool priorities
- - strtok_ts: Thread-safe strtok that work on POSIX or Windows
- - Bugfix: Supress "caught up" event when first switching to a pool
- - Announce and restart work immediately when current pool has caught up to the
- current block
- - Bugfix: Don't consider work stale due to other pools' longpolls, if
- --failover-only is active
- - Refactor stale_work function to only flag actual stale shares
- - stale_work: Don't factor getwork delay into expiry for shares (only for work
- itself)
- - Bugfix: Use pool number rather than numeric pointer to strict pool, in block
- found notice
- - Accept JSON Numbers in config file parameters
- - Improve readability of OPT_HASARG in parse_config
- - Allow JSON false as a valid value for strictly boolean options
- - Include scan-serial in example configuration file
- - fpgautils: add support for 57.6 kBd serial
- - miner.php add a socket RCV timeout for if cgminer is hung and the API thread
- is still running
- - BFL force all code to timeout to avoid hanging
- - Initialise mdplatform.
- - Find the gpu platform with the most devices and use that if no platform option
- is passed.
- - Bugfix: It is not a hardware error if nonces returned from modminer don't
- meet the pool target
- - bitforce & icarus: Log detection failures at debug log level, so we don't
- confuse users who have different devices (which is why these drivers are
- failing detection!)
- - Show "WAIT" (LIFE_WAIT status) if a cgpu is idle waiting for work (pool
- slow/dead)
- - Instead of quitting on failing N retries, just discard the share
- - Bugfix: Don't discard stale shares after submission failure, if user or pool
- wants stales submitted
- - Bugfix: Record discard-during-retry shares in the sharelog
- - Bugfix: Only show Algorithm in RPC summary if CPU mining is actually active
- - OpenCL: Remove intensity from statline, since it overflowed
- - Move "Q" (requested getworks) to second status line as "GW" to balance out
- better
- - Bugfix: Use a mutex to control non-curses output
- - Simplify code to a single vprintf path for curses-less printing
- - Move opt_quiet check to my_log_curses, so it works for curses-less builds
- - Use log_generic for vapplog to cut down on code duplication
- - Bugfix: Copy argv[0] given to dirname()
- - Find the gpu platform with the most devices and use that if no platform
- option is passed.
- - Allow more platforms to be probed if first does not return GPUs.
- - Detach pthread from within the api thread in case it is terminated due to not
- being instantiated before pthread_cancel is called from main, leading to a
- segfault.
- - Debug output per thread hashrate is out by a factor of 1000.
- - Don't check if CPUs are sick since they can't be.
- - Calculate midstate in separate function and remove likely/unlikely macros
- since they're dependent on pools, not code design.
- - Display in debug mode when we're making the midstate locally.
- - Bugfix: Document --no-adl and --gpu-platform
- - Bugfix: Remove redundant documentation of --auto-fan and --auto-gpu (they
- are in GPU-specific options)
- - CPU mining may not be included in binaries, but it's not deprecated for
- BFGMiner either
- - Bugfix: Restore case-insensitivity to input
- - Scroll the device list with up/down arrow keys, if it is overflowed
- - Use select statement to handle input
- - Bugfix: Actually check that the device fits in the individual summary window
- before trying to print it
- - Bugfix: Fix build without curses but with OpenCL
- - Bugfix: Don't show a Temperature key if it isn't known
- - BFGMiner-specific NEWS fix
- BFGMiner Version 2.5.1 - July 13, 2012
- - Replace CPU Algo in header with runtime
- - Bugfix: Calculate diff-1 utility to fix utility-hashrate on pools with
- diff!=1
- - Add utility hashrate to curses display
- - Show units in kh, Gh, Th, etc as needed to use at most 3 integer digits
- - Use FTD2XX.DLL on Windows to autodetect BitFORCE SHA256 devices
- - bitforce_get_result returns -1 on error now.
- - Check return value of read in BFgets
- - Bugfix: modminer: Count hashes done before work restart
- - Bugfix: modminer: Adapt "get nonce" error condition to new scanhash=>-1
- error API
- - Bugfix: Make our Windows nanosleep/sleep replacements standards-compliant
- (which fixes nmsleep) and include compat.h for bitforce (for sleep)
- - miner.php fix rig # when miners fail
- - Fix whitespace mangling.
- - bitforce: Use "full work" vs "nonce range" for kernel name
- - Abbrv. correction
- - Remove superfluous ave_wait
- - Put kname change for broken nonce-range back in
- - Add average wait time to api stats
- - Revert "Merge branch 'ave_time' of https://github.com/pshep/cgminer.git"
- - Add average return time to api stats
- - Missed one nonce-range disabling.
- - Change timeouts to time-vals for accuracy.
- - More BFL tweaks. Add delay between closing and reopening port. Remove buffer
- clear in re-init Add kernel type (mini-rig or single)
- - Revert "Change BFL driver thread initialising to a constant 100ms delay
- between devices instead of a random arrangement."
- - Only try to shut down work cleanly if we've successfully connected and started
- mining.
- - Fix spelling.
- - modminer: Firmware returns 0xffffff00 immediately if we set clockspeed too
- high
- - Bugfix: modminer: Actually count good shares
- - Bugfix: Adapt OpenCL scanhash errors to driver API change (errors are now -1,
- not 0)
- - Remove bitforce_thread_init The delay thing does nothing useful... when long
- poll comes around, all threads restart at the same time anyway.
- - fix API support for big endian machines
- - Bugfix: Use const struct device_api* for mt_disable
- - modminer: Show progress of bitstream upload
- - Bugfix: Don't declare devices SICK if they're just busy initializing
- - Bugfix: Calculate nsec in nmsleep correctly
- - miner.php allow rig names in number buttons
- - Change BFL driver thread initialising to a constant 100ms delay between
- devices instead of a random arrangement.
- - Spelling typo.
- - Time opencl work from start of queueing a kernel till it's flushed when
- calculating dynamic intensity.
- - Modify te scanhash API to use an int64_t and return -1 on error, allowing zero
- to be a valid return value.
- - Check for work restart after the hashmeter is invoked for we lose the hashes
- otherwise contributed in the count.
- - Remove disabled: label from mining thread function, using a separate
- mt_disable function.
- - Style changes.
- - Cope with signals interrupting the nanosleep of nmsleep.
- - Use standard cfsetispeed/cfsetospeed to set baud rate on *nix
- - miner.php split() flagged deprecated in PHP 5.3.0
- - Bugfix: Use nmsleep instead of restart_wait, so we always wait the full time
- - Make long timeout 10seconds on bitforce for when usleep or nanosleep just
- can't be accurate...
- BFGMiner Version 2.5.0 - July 7, 2012
- - Fix BitFORCE driver to not silenty discard valid shares (bug introduced by
- CGMiner merges)
- - Fix --benchmark not working since the dynamic addition of pools and pool
- stats.
- - Make disabling BFL nonce range support a warning since it has to be explicitly
- enabled on the command line now.
- - miner.php allow renaming table headers
- - Make bitforce nonce range support a command line option --bfl-range since
- enabling it decrease hashrate by 1%.
- - Add sanity checking to make sure we don't make sleep_ms less than 0 in
- bitforce.
- - The fastest minirig devices need a significantly smaller starting sleep time.
- - Use a much shorter initial sleep time to account for faster devices and nonce
- range working, and increase it if nonce range fails to work.
- - Use nmsleep instead of usleep in bitforce.
- - Provide a ms based sleep function that uses nanosleep to avoid the inaccuracy
- of usleep on SMP systems.
- - delay_time_ms is always set so need not be initialised in bitforce.
- - Increase bitforce timeout to 10 seconds.
- - Add more hysteresis and poll ~5 times to allow for timer delays in bitforce
- devices.
- - miner.php allow alternating line colours (off by default)
- - Display the actual duration of wait when it is greater than the cutoff.
- - Set nonce to maximum once we determine nonce range support is broken.
- - Initial wait time is always known so no need to zero it beforehand in
- bitforce.
- - No point counting wait time until the work is actually sent to bitforce
- devices.
- - Use string comparison functions instead of explicit comparisons.
- - Account for wait_ms time when nonce_range is in use on BFL.
- - Split nonces up into 1/5 chunks when nonce range is supported.
- - limit clear buffer iterations.
- - Ad fd check to clear buffer.
- - miner.php remove incorrect 'DATE' error message
- - miner.php allow summary header in custom pages
- - Disable nonce range support in BFL when broken support is detected.
- - Restart_wait is only called with a ms value so incorporate that into the
- function.
- - Only try to adjust dev width when curses is built in.
- - miner.php define custom sum fields as a simple array
- - Fix off-by-one error in nonce increment in bfl.
- - Use BE when setting nonce in bitforce nonce range work.
- - Enable nonce range in the normal init sequence for bfl.
- - Queue extra work at 2/3 differently depending on whether we're using nonce
- range or not.
- - Initially enable support for nonce range support on bfl, splitting nonces up
- into 3/4 size and only disable it if it fails on work submit.
- - Attempt to detect nonce range support in BFL by sending work requring its
- support.
- - Limit retrying on busy for up to BITFORCE_TIMEOUT_MS
- - Attempt to initialise while bitforce device returns BUSY.
- - Extend length of string that can be passed to BFL devices.
- - Fix signedness warning.
- - Adjust device width column to be consistent.
- - Use cgpu-> not gpus[] in watchdog thread.
- - Add api stats (sleep time)
- - Timing tweaks Added long and short timeouts, short for detecting throttling,
- long to give up totally. Reset sleep time when device re-initialised Still check
- results after timeout Back up a larger time if result on first poll.
- - Add API Notify counter 'Comms Error'
- - Style police on api.c
- - Do all logging outside of the bitforce mutex locking to avoid deadlocks.
- - Remove applog call from bfwrite to prevent grabbing nested mutexes.
- - Bitforce style changes.
- - Minor style changes.
- - Remove needless roundl define.
- - Made JSON error message verbose.
- - Fine-tune timing adjustment. Also remove old work_restart timing.
- - Check for gpu return times of >= 0, not just 0, to fix intensity dropping to
- -10.
- - Restart is zeroed in the mining thread so no need to do it inside the bitforce
- code.
- - More improvements to comms. BFL return nothing when throttling, so should not
- be considered an error. Instead repeat with a longer delay.
- - Polling every 10ms there's not much point checking the pthread_cond_timedwait
- as it just adds overhead. Simply check the value of work_restart in the bfl main
- polling loop.
- - Use a pthread conditional that is broadcast whenever work restarts are
- required. Create a generic wait function waiting a specified time on that
- conditional that returns if the condition is met or a specified time passed to
- it has elapsed. Use this to do smarter polling in bitforce to abort work, queue
- more work, and check for results to minimise time spent working needlessly.
- - Add busy time to wait time.
- - api.c put version up to 1.14
- - Add tiny delay after writing to BFL Change BFL errors to something more human
- readable Send work busy re-tries after 10ms delay
- - Fix race condition in thread creation that could under some conditions crash
- BFGMiner at startup
- BFGMiner Version 2.4.4 - July 1, 2012
- - Fix builds on non gnu platforms.
- - api.c ensure old mode is always available when not using --api-groups + quit()
- on param errors
- - Implement rudimentary X-Mining-Hashrate support.
- - Detect large swings in temperature when below the target temperature range and
- change fan by amounts dependant on the value of tdiff.
- - Adjust the fanspeed by the magnitude of the temperature difference when in the
- optimal range.
- - Revert "Restarting cgminer from within after ADL has been corrupted only leads
- to a crash. Display a warning only and disable fanspeed monitoring."
- - api.c fix json already closed
- - implement and document API option --api-groups
- - Put upper bounds to under 2 hours that work can be rolled into the future for
- bitcoind will deem it invalid beyond that.
- - define API option --api-groups
- - api.c allow unwell devices to be enabled so they can be cured
- - miner.php - fix/enable autorefresh for custom pages
- - miner.php allow custom summary pages - new 'Mobile' summary
- - Work around pools that advertise very low expire= time inappropriately as this
- leads to many false positives for stale shares detected.
- - Only show ztex board count if any exist.
- - There is no need for work to be a union in struct workio_cmd
- - fpgautils.c include a debug message for all unknown open errors
- - Don't keep rolling work right up to the expire= cut off. Use 2/3 of the time
- between the scantime and the expiry as cutoff for reusing work.
- - Log a specific error when serial opens fail due to lack of user permissions
- - Increase GPU timing resolution to microsecond and add sanity check to ensure
- times are positive.
- - Opencl code may start executing before the clfinish order is given to it so
- get the start timing used for dynamic intensity from before the kernel is
- queued.
- - fpgautils.c - set BAUD rate according to termio spec
- - fpgautils.c - linux ordering back to the correct way
- - miner.php remove unneeded '.'s
- - miner.php add auto refresh options
- - miner.php add 'restart' next to 'quit'
- - miner.php make fontname/size configurable with myminer.php
- - Make the pools array a dynamically allocated array to allow unlimited pools to
- be added.
- - Make the devices array a dynamically allocated array of pointers to allow
- unlimited devices.
- - Dynamic intensity for GPUs should be calculated on a per device basis. Clean
- up the code to only calculate it if required as well.
- - Bugfix: Provide alternative to JSON_ENCODE_ANY for Jansson 1.x
- - Use a queueing bool set under control_lock to prevent multiple calls to
- queue_request racing.
- - Use the work clone flag to determine if we should subtract it from the total
- queued variable and provide a subtract queued function to prevent looping over
- locked code.
- - Don't decrement staged extras count from longpoll work.
- - Count longpoll's contribution to the queue.
- - Increase queued count before pushing message.
- - Test we have enough work queued for pools with and without rolltime
- capability.
- - As work is sorted by age, we can discard the oldest work at regular intervals
- to keep only 1 of the newest work items per mining thread.
- - Roll work again after duplicating it to prevent duplicates on return to the
- clone function.
- - Abstract out work cloning and clone $mining_threads copies whenever a rollable
- work item is found and return a clone instead.
- - api.c display Pool Av in json
- - Take into account average getwork delay as a marker of pool communications
- when considering work stale.
- - Work out a rolling average getwork delay stored in pool_stats.
- - Getwork delay in stats should include retries for each getwork call.
- - Walk through the thread list instead of searching for them when disabling
- threads for dynamic mode.
- - Extend nrolltime to support the expiry= parameter. Do this by turning the
- rolltime bool into an integer set to the expiry time. If the pool supports
- rolltime but not expiry= then set the expiry time to the standard scantime.
- - When disabling fanspeed monitoring on adl failure, remove any twin GPU
- association. This could have been leading to hangs on machines with dual GPU
- cards when ADL failed.
- - modminer: Don't delay 2nd+ FPGAs during work restart
- - Disable OpenCL code when not available.
- - Fix openwrt crashing on regeneratehash() by making check_solve a noop.
- - Fix sign warning.
- - Bugfix: icarus: properly store/restore info and work end times across longpoll
- restarts
- - Enable modminer for release builds
- BFGMiner Version 2.4.3 - June 14, 2012
- - Change device API "name" to reflect driver name abbreviation instead of device type name
- - miner.php allow a separate user settings file
- - modminer: Implement extended device stats to expose each Board to the RPC API
- - Bugfix: Use new cgpu->thr for longpoll waking
- - bitforce: Remove 4.5s delay before polling starts, since MiniRig finishes sooner
- - FPGA - allow device detect override without an open failure
- - Bugfix: Missing printf value in merge from cgminer
- - Ensure C compiler is in C99 mode
- - Add CPU core count detection for BSD/Mac
- - Set CPU mining idle priority on Windows
- - can_roll and should_roll should have no bearing on the cycle period within the
- miner_thread so remove it.
- - Check for strategy being changed to load balance when enabling LPs.
- - Check that all threads on the device that called get_work are waiting on
- getwork before considering the pool lagging.
- - Iterate over each thread belonging to each device in the hashmeter instead of
- searching for them now that they're a list.
- - When using rotate pool strategy, ensure we only select from alive enabled
- pools.
- - Start longpoll from every pool when load balance strategy is in use.
- - Add mandatory and block fields to the work struct. Flag any shares that are
- detected as blocks as mandatory to submit, along with longpoll work from a
- previously rejecting pool.
- - Consider the fan optimal if fanspeed is dropping but within the optimal speed
- window.
- - Fix typo in some API messages (succeess/success)
- - api.c MMQ stat bugs
- - Bugfix: Fix warnings when built without libudev support
- - Bugfix: slay a variety of warnings
- - Bugfix: modminer: Fix unsigned/signed comparison and similar warnings
- - API add ModMinerQuad support
- - Bugfix: Honour forceauto parameter in serial_detect functions
- - modminer: Temperature sensor improvements
- - modminer: Make log messages more consistent in format
- - Only adjust GPU speed up if the fanspeed is within the normal fanrange and
- hasn't been turned to maximum speed under overheat conditions.
- - ModMiner use valid .name
- - New driver: BTCFPGA ModMiner
- - Abstract generally useful FPGA code into fpgautils.c
- - API add stats for pool getworks
- - miner.php option to hide specific fields from the display
- - miner.php add version numbers to the summary page
- - Update debian configs to v2.4.2
- - Add API and FPGA READMEs into Makefile to be included in source distribution.
- - Icarus - fix unit64_t printf warnings
- BFGMiner Version 2.4.2 - June 2, 2012
- - Use epoll to immediately interrupt Icarus with new work on longpolls (Linux)
- - API.class compiled with Java SE 6.0_03 - works with Win7x64
- - miner.php highlight devs too slow finding shares (possibly failing)
- - API update version to V1.11 and document changes
- - API save default config file if none specified
- - api.c save success incorrectly returns error
- - api.c replace BUFSIZ (linux/windows have different values)
- - Move RPC API content out of README to API-README
- - Open a longpoll connection if a pool is in the REJECTING state as it's the
- only way to re-enable it automatically.
- - Use only one longpoll as much as possible by using a pthread conditional
- broadcast that each longpoll thread waits on and checks if it's the current pool
- before
- - If shares are known stale, don't use them to decide to disable a pool for
- sequential rejects.
- - Restarting cgminer from within after ADL has been corrupted only leads to a
- crash. Display a warning only and disable fanspeed monitoring.
- - Icarus: fix abort calculation/allow user specified abort
- - Icarus: make --icarus-timing hidden and document it in FPGA-README
- - Icarus: high accuracy timing and other bitstream speed support
- - add-MIPSEB-to-icarus-for-BIG_ENDIAN
- - work_decode only needs swab32 on midstate under BIG ENDIAN
- - add compile command to api-example.c
- - save config bugfix: writing an extra ',' when no gpus
- - Add dpkg-source commits
- BFGMiner Version 2.4.1 - May 6, 2012
- - Icarus: Calibrate hashrate yet even more accurately
- - In the unlikely event of finding a block, display the block solved count with
- the pool it came from for auditing.
- - Display the device summary on exit even if a device has been disabled.
- - Use correct pool enabled enums in api.c.
- - Import Debian packaging configs
- - Ensure we test for a pool recovering from idle so long as it's not set to
- disabled.
- - Fix pool number display.
- - Give BFGMiner -T message only if curses is in use.
- - Reinit_adl is no longer used.
- - API 'stats' allow devices to add their own stats also for testing/debug
- - API add getwork stats to BFGMiner - accesable from API 'stats'
- - Don't initialise variables to zero when in global scope since they're already
- initialised.
- - Get rid of unitialised variable warning when it's false.
- - Move a pool to POOL_REJECTING to be disabled only after 3 minutes of
- continuous rejected shares.
- - Some tweaks to reporting and logging.
- - API support new pool status
- - Add a temporarily disabled state for enabled pools called POOL_REJECTING and
- use the work from each longpoll to help determine when a rejecting pool has
- started working again. Switch pools based on the multipool strategy once a pool
- is re-enabled.
- - Removing extra debug
- - Fix the benchmark feature by bypassing the new networking code.
- - Reset sequential reject counter after a pool is disabled for when it is
- re-enabled.
- - ztex updateFreq was always reporting on fpga 0
- - Trying harder to get 1.15y working
- - Specifying threads on multi fpga boards extra cgpu
- - Missing the add cgpu per extra fpga on 1.15y boards
- - API add last share time to each pool
- - Don't try to reap curls if benchmarking is enabled.
- BFGMiner Version 2.4.0 - May 3, 2012
- - Only show longpoll warning once when it has failed.
- - Convert hashes to an unsigned long long as well.
- - Detect pools that have issues represented by endless rejected shares and
- disable them, with a parameter to optionally disable this feature.
- - Bugfix: Use a 64-bit type for hashes_done (miner_thread) since it can overflow
- 32-bit on some FPGAs
- - Implement an older header fix for a label existing before the pthread_cleanup
- macro.
- - Limit the number of curls we recruit on communication failures and with
- delaynet enabled to 5 by maintaining a per-pool curl count, and using a pthread
- conditional that wakes up when one is returned to the ring buffer.
- - Generalise add_pool() functions since they're repeated in add_pool_details.
- - Bugfix: Return failure, rather than quit, if BFwrite fails
- - Disable failing devices such that the user can attempt to re-enable them
- - Bugfix: thread_shutdown shouldn't try to free the device, since it's needed
- afterward
- - API bool's and 1TBS fixes
- - Icarus - minimise code delays and name timer variables
- - api.c V1.9 add 'restart' + redesign 'quit' so thread exits cleanly
- - api.c bug - remove extra ']'s in notify command
- - Increase pool watch interval to 30 seconds.
- - Reap curls that are unused for over a minute. This allows connections to be
- closed, thereby allowing the number of curl handles to always be the minimum
- necessary to not delay networking.
- - Use the ringbuffer of curls from the same pool for submit as well as getwork
- threads. Since the curl handles were already connected to the same pool and are
- immediately available, share submission will not be delayed by getworks.
- - Implement a scaleable networking framework designed to cope with any sized
- network requirements, yet minimise the number of connections being reopened. Do
- this by create a ring buffer linked list of curl handles to be used by getwork,
- recruiting extra handles when none is immediately available.
- - There is no need for the submit and getwork curls to be tied to the pool
- struct.
- - Do not recruit extra connection threads if there have been connection errors
- to the pool in question.
- - We should not retry submitting shares indefinitely or we may end up with a
- huge backlog during network outages, so discard stale shares if we failed to
- submit them and they've become stale in the interim.
- BFGMiner Version 2.3.6 - April 29, 2012
- - Shorten stale share messages slightly.
- - Protect the freeing of current_hash under mutex_lock to prevent racing on it
- when set_curblock is hit concurrently.
- - Change default behaviour to submitting stale, removing the --submit-stale
- option and adding a --no-submit-stale option.
- - Make sure to start the getwork and submit threads when a pool is added on the
- fly. This fixes a crash when a pool is added to running BFGMiner and then
- switched to.
- - Faster hardware can easily outstrip the speed we can get work and submit
- shares when using only one connection per pool.
- - Test the queued list to see if any get/submits are already queued and if they
- are, start recruiting extra connections by generating new threads.
- - This allows us to reuse network connections at low loads but recuit new open
- connections as they're needed, so that BFGMiner can scale to hardware of any
- size.
- BFGMiner Version 2.3.5 - April 28, 2012
- - Restarting BFGMiner leads to a socket that can't be bound for 60 seconds, so
- increase the interval that API binding waits to 30 seconds to minimise the
- number of times it will retry, spamming the logs.
- - Give a longpoll message for any longpoll that detects a block change, primary
- or backup, and also display which pool it was.
- - Decrease utility display to one decimal place.
- - Small cosmetic output alignment.
- - Add pool number to stale share message.
- - Add space to log output now that there is more screen real estate available.
- - Indentation clean up.
- - Remove thread id display from rejected shares as well.
- - Merge pull request #185 from Diapolo/diakgcn
- - add goffset support for diakgcn with -v 1 and update kernel version
- - Set have_longpoll to true when there is at least one pool with longpoll.
- - Don't display the thread ID since it adds no useful information over the
- device number.
- - Don't display the first 8 bytes of a share since they will always be zero at
- >= 1 difficulty.
- - work->longpoll is reset across test_work_current so we need to recheck what
- pool it belongs to.
- - Use longpolls from backup pools with failover-only enabled just to check for
- block changes, but don't use them as work.
- - Start longpoll only after we have tried to extract the longpoll URL.
- - Check for submitold flag on resubmit of shares, and give different message for
- stale shares on retry.
- - Check for submitold before submitstale.
- - Don't force fresh curl connections on anything but longpoll threads.
- - Create one longpoll thread per pool, using backup pools for those pools that
- don't have longpoll.
- - Use the work created from the longpoll return only if we don't have
- failover-enabled, and only flag the work as a longpoll if it is the current
- pool.
- - This will work around the problem of trying to restart the single longpoll
- thread on pool changes that was leading to race conditions.
- - It will also have less work restarts from the multiple longpolls received from
- different pools.
- - Remove the invalid entries from the example configuration file.
- - Add support for latest ATI SDK on windows.
- - Export missing function from libztex.
- - miner.php change socktimeoutsec = 10 (it only waits once)
- - Bugfix: Make initial_args a const char** to satisfy exec argument type warning
- (on Windows only)
- - miner.php add a timeout so you don't sit and wait ... forever
- - Create discrete persistent submit and get work threads per pool, thus allowing
- all submitworks belonging to the same pool to reuse the same curl handle, and
- all getworks to reuse their own handle.
- - Use separate handles for submission to not make getwork potentially delay
- share submission which is time critical.
- - This will allow much more reusing of persistent connections instead of opening
- new ones which can flood routers.
- - This mandated a rework of the extra longpoll support (for when pools are
- switched) and this is managed by restarting longpoll cleanly and waiting for a
- thread join.
- - miner.php only show the current date header once
- - miner.php also add current time like single rig page
- - miner.php display rig 'when' table at top of the multi-rig summary page
- - README - add some Ztex details
- - api.c include zTex in the FPGA support list
- - api.c ensure 'devs' shows PGA's when only PGA code is compiled
- - miner.c sharelog code consistency and compile warning fix
- - README correct API version number
- - README spelling error
- - api.c combine all pairs of sprintfs()
- - api.c uncomment and use BLANK (and COMMA)
- - Code style cleanup
- - Annotating frequency changes with the changed from value
- - README clarification of 'notify' command
- - README update for API RPC 'devdetails'
- - api.c 'devdetails' list static details of devices
- - Using less heap space as my TP-Link seems to not handle this much
- BFGMiner Version 2.3.4 - April 26, 2012
- - New maintainership of code with modular FPGA/GPU focus, under BFGMiner name
- - Complete working support for cross-compiling Windows builds on Linux.
- - Fix usage of low --scan-time settings so it doesn't busy-loop
- - JSON API: Add new 'devdetail' command to get fixed device information
- - JSON API: Implement driver abstraction for extra device status
- - Icarus: Use epoll to wait for serial port input properly, when available
- - Icarus: Workaround buggy USB-UART that causes Icarus to stop mining rarely
- - Icarus: Estimate mining hashrate correctly, calibrated from real-world data
- - Icarus: Parallelize work setup with Icarus hash search improving performance
- - Icarus: More reliable detection and runtime
- - OpenCL: Move GPU-specific data fetching from JSON API to OpenCL driver
- - OpenCL: Dynamically load OpenCL library, to be more vendor-independent and
- allow use without actually having OpenCL (i.e. FPGA-only rigs).
- CGMiner Version 2.3.4 - April 25, 2012
- - Extensively document the cause of GPU device issues and the use of --gpu-map.
- - Support for share logging
- - Detect poorly performing combination of SDK and phatk kernel and add verbose
- warning at startup.
- - Icarus update to new add_cgpu()
- - Icarus driver working with Linux and Windows
- - api.c fix unused variable compile warning
- - Display all OpenCL devices when -n is called as well to allow debugging of
- differential mapping of OpenCL to ADL.
- - Add a --gpu-map option which will allow arbitrarily mapping ADL devices to
- OpenCL devices for instances where association by enumeration alone fails.
- - Increase upper limit on number of extra items to queue as some FPGA code can't
- yet reliably keep many devices busy.
- - Display configuration file information when -c option is passed and only when
- file exists on loading default config file.
- - Display configuration file loaded, if any, and debug output if configuration
- file parsing failed.
- - Add missing ztex header to Makefile for distribution.
- - Document long-form COM port device names on Windows, required to specify
- serial ports above 9
- - Include ztex bitstreams firmware in distribution and install if configured in.
- - Style police on driver-ztex.c
- - work_restart should only be changed by cgminer.c now
- - Shut down the api cleanly when the api thread is cancelled. This should allow
- the api socket to be closed successfully to next be reopened with app_restart.
- - Make a union for cgpu device handles, and rename "device" to "device_ztex"
- since it's Ztex-specific
- - Initialise name variable.
- - Remove unnecessary check for variable that always has memory allocated.
- - Bugfix: Missing "break" no-op in default case
- - Make the status window and log window as large as can fit on startup,
- rechecking to see if it can be enlarged after the fact. This allows any number
- of devices to be displayed provided the window is made long enough without
- corrupting the output.
- - Style police on libztex.c.
- - API add removepool like the screen interface
- - api.c escape required characters in return strings + pools returns the
- username
- - Set lp_path to NULL after free for consistency.
- - Removing dmalloc import left behind by mistake
- - Fixing leak in resp_hdr_cb
- - miner.php warning highlight GPU stats if they are zero (e.g. ADL not enabled)
- - miner.php highlight any device that isn't 'Enabled'
- - miner.php highlight any Status that isn't 'Alive'
- - miner.php optionally support multiple rigs
- - Initial Ztex support 1.15x board.
- CGMiner Version 2.3.3 - April 15, 2012
- - Don't even display that cpumining is disabled on ./configure to discourage
- people from enabling it.
- - Do a complete cgminer restart if the ATI Display Library fails, as it does on
- windows after running for some time, when fanspeed reporting fails.
- - Cache the initial arguments passed to cgminer and implement an attempted
- restart option from the settings menu.
- - Disable per-device status lines when there are more than 8 devices since
- screen output will be corrupted, enumerating them to the log output instead at
- startup.
- - Reuse Vals[] array more than W[] till they're re-initialised on the second
- sha256 cycle in poclbm kernel.
- - Minor variable alignment in poclbm kernel.
- - Make sure to disable devices with any status not being DEV_ENABLED to ensure
- that thermal cutoff code works as it was setting the status to DEV_RECOVER.
- - Re-initialising ADL simply made the driver fail since it is corruption over
- time within the windows driver that's responsible. Revert "Attempt to
- re-initialise ADL should a device that previously reported fanspeed stops
- reporting it."
- - Microoptimise poclbm kernel by ordering Val variables according to usage
- frequency.
- CGMiner Version 2.3.2 - March 31, 2012
- - Damping small changes in hashrate so dramatically has the tendency to always
- make the hashrate underread so go back to gentle damping instead.
- - Revert the crossover of variables from Vals to W in poclbm kernel now that
- Vals are the first declared variables so they're used more frequently.
- - Vals variables appearing first in the array in poclbm is faster.
- - Change the preferred vector width to 1 for Tahiti only, not all poclbm
- kernels.
- - Use a time constant 0.63 for when large changes in hashrate are detected to
- damp change in case the large change is an aliasing artefact instead of a real
- chang
- - Only increment stale counter if the detected stales are discarded.
- - Attempt to re-initialise ADL should a device that previously reported fanspeed
- stops reporting it.
- - Move the ADL setup and clearing to separate functions and provide a reinit_adl
- function to be used when adl fails while running.
- - Use slightly more damping on the decay time function in the never-ending quest
- to smooth off the hashmeter.
- - Set the starting fanspeed to a safe and fairly neutral 50% when autofan is
- enabled.
- - Provide locking around updates of cgpu hashrates as well to prevent multiple
- threads accessing data fields on the same device.
- - Display the beginning of the new block in verbose mode in the logs.
- - Reinstate old diablo kernel variable ordering from 120222, adding only goffset
- and vector size hint. The massive variable ordering change only helped one SDK
- on
- - Change the version number on the correct kernels.
- - api.c devicecode/osinfo incorrectly swapped for json
- - Add extensive instructions on how to make a native windows build.
- - Update version numbers of poclbm and diablo kernels as their APIs have also
- changed.
- - Use global offset parameter to diablo and poclbm kernel ONLY for 1 vector
- kernels.
- - Use poclbm preferentially on Tahiti now regardless of SDK.
- - Remove unused constant passed to poclbm.
- - Clean up use of macros in poclbm and use bitselect everywhere possible.
- - Add vector type hint to diablo kernel.
- - Add worksize and vector attribute hints to the poclbm kernel.
- - Spaces for non-aligned variables in poclbm.
- - Swap Vals and W variables where they can overlap in poclbm.
- - More tidying of poclbm.
- - Tidy up first half of poclbm.
- - Clean up use of any() by diablo and poclbm kernels.
- - Minor variable symmetry changes in poclbm.
- - Put additions on separate lines for consistency in poclbm.
- - Consolidate last use of W11 into Vals4 in poclbm.
- - Change email due to SPAM
- - api.c miner.php add a '*' to the front of all notify counters - simplifies
- future support of new counters
- - miner.php add display 'notify' command
- - Small change to help arch's without processor affinity
- - Fix bitforce compile error
- - api.c notify should report disabled devices also - of course
- - API returns the simple device history with the 'notify' command
- - code changes for supporting a simple device history
- - api.c Report an OS string in config to help with device issues
- - api.c fix Log Interval - integer in JSON
- - api.c config 'Device Code' to show list of compiled devices + README
- - api.c increase buffer size close to current code allowable limit
- - removed 8-component vector support from kernel, as this is not supported in
- CGMINER anyway
- - forgot to update kernel modification date, fixed ;)
- - reordered an addition in the kernel, which results in less instructions used
- in the GPU ISA code for GCN
- - miner.php: option for readonly or check privileged access
- - Ignore reduntant-with-build options --disable-gpu, --no-adl, and --no-restart
- - miner.php: ereg_replace is DEPRECATED so use preg_replace instead
- - Make curses TUI support optional at compile-time.
- - Bugfix: AC_ARG_WITH provides withval instead of enableval
- - miner.php split devs output for different devices
- - api.c: correct error messages
- - icarus.c modify (regular) timeout warning to only be debug
- - icarus.c set the windows TODO timeout
- - Allow specifying a specific driver for --scan-serial
- - optimized nonce-check and output code for -v 2 and -v 4
- - Bugfix: Check for libudev header (not just library) in configure, and document
- optional dependency
- - Add API support for Icarus and Bitforce
- - Next API version is 1.4 (1.3 is current)
- - README/api.c add "When" the request was processed to STATUS
- - Bugfix: ZLX to read BitFORCE temp, not ZKX -.-
- - Use libudev to autodetect BitFORCE GPUs, if available
- - Use the return value of fan_autotune to set fan_optimal instead of passing it
- as a pointer.
- - Pass the lasttemp from the device we're using to adjust fanspeed in twin
- devices.
- - fix the name to 3 chars, fix the multi-icarus support
- - Bugfix: "-S auto" is the default if no -S is specified, and there is no such
- delay in using it
- - README add information missing from --scan-serial
- - Update README RPC API Version comment
- - Bugfix: Allow enabling CPU even without OpenCL support
- - Change failed-to-mine number of requested shares messge to avoid segfault on
- recursive calling of quit().
- - Get rid of extra char which is just truncated in poclbm kernel.
- - only small code formating changes
- - removed vec_step() as this could lead to errors on older SDKs
- - unified code for generating nonce in kernel and moved addition of base to the
- end -> faster
- CGMiner Version 2.3.1 - February 24, 2012
- - Revert input and output code on diakgcn and phatk kernels to old style which
- worked better for older hardware and SDKs.
- - Add a vector*worksize parameter passed to those kernels to avoid one op.
- - Increase the speed of hashrate adaptation.
- - Only send out extra longpoll requests if we want longpolls.
- - API implement addpool command
- - API return the untouched Total MH also (API now version 1.3)
- - Add enable/disablepool to miner.php example and reduce font size 1pt
- CGMiner Version 2.3.0 - February 23, 2012
- - Consider extra longpoll work items as staged_extra so as to make sure we queue
- more work if queueing regular work items as longpolls.
- - Use diablo kernel on all future SDKs for Tahiti and set preferred vector width
- to 1 on poclbm kernel only.
- - Explicitly type the constants in diakgcn kernel as uint, to be in line with
- poclbm kernel.
- - Reset all hash counters at the same time as resetting start times to get
- accurate hashrates on exiting which is mandatory for benchmarking.
- - Report thread out before it starts to avoid being flagged as sick when waiting
- for the first work item.
- - Don't disable and re-enable devices as they may recover and in the meantime
- have their status set to OFF.
- - API new commands enablepool and disablepool (version already incremented)
- - Tolerate new-format temperature readings for bitforce
- - Modify cgminer.c pool control to allow API to call it
- - Bugfix: Fix BitFORCE driver memory leak in debug logging
- - Extra byte was being unused in poclbm leading to failure on some platforms.
- - Explicitly type the constants in poclbm kernel as uint.
- - Don't save 'include' when saving the configuration
- - Allow configuration file to include another recursively
- - Use the SDK and hardware information to choose good performing default
- kernels.
- - Move phatk kernel to offset vector based nonce bases as well.
- - Add a --benchmark feature which works on a fake item indefinitely to compare
- device performance without any server or networking influence.
- - Allow writing of multiple worksizes to the configuration file.
- - Allow writing of multiple vector sizes to the configuration file.
- - Allow writing of multiple kernels to the configuration file.
- - Allow multiple different kernels to be chosen per device.
- - Allow the worksize to be set per-device.
- - Allow different vectors to be set per device.
- - If we're well below the target temperature, increase gpu engine speed back to
- maximum in case we have gotten lost between profiles during an idle period.
- - We should be setting the value of fan_optimal, not its address.
- - As all kernels will be new versions it's an opportunity to change the .bin
- format and make it simpler. Specifying bitalign is redundant and long can be l.
- - Use any() in kernel output code.
- - Put the nonce for each vector offset in advance, avoiding one extra addition
- in the kernel.
- - Reset times after all mining threads are started to make estimating hashrates
- easier at startup.
- - Bugfix: allow no-exec (NX) stack
- - Fix minor warning.
- - fix the bitforce.c code style follow 1TBS
- - fix icarus.c compile warning
- - small changes to speedup no vec for AMD 898.1 OCL runtime
- - Update licensing to GPL V3.
- - Reset the longpoll flag after it's been used once to prevent it restarting
- work again.
- - Begin import of DiabloMiner kernel.
- - Modify API debug messages to say API instead of DBG
- - When API shuts down cgminer don't kill itself
- - Don't make rolled work from the longpoll be seen as other longpoll work items.
- - API add 'privileged' command so can verify access level
- - Set the lp_sent variable under lock since there will almost always be a race
- on setting this variable, potentially leading to multiple LPs being sent out.
- - API restrict access to all non display commands by default
- - Update API version to 1.2 for new 'Log Interval'
- - API add --log Interval to 'config' reply
- - --api-allow special case 0/0 means all
- CGMiner Version 2.2.7 - February 20, 2012
- - Send out extra longpolls when we have switched pools and the longpoll thread
- is still bound to the old one. This is particularly useful with p2pool where
- longpolls do not correlate with main bitcoin block change and would have led to
- high reject rates on failover.
- - Store whether a work item is the result of a longpoll or not in struct work
- and use it to help determine block changes directly from the work longpoll bool.
- - Keep track of when a longpoll has been sent for a pool and if the current pool
- is requesting work but has not sent a longpoll request, convert one of the work
- items to a longpoll.
- - Store the longpoll url in the pool struct and update it from the pool_active
- test in case it changes. This is to allow further changes to longpoll management
- on switching pools.
- - Re-check for a longpoll supporting pool every 30 seconds if none is found
- initially.
- - Report threads as busy waiting on getwork on startup to avoid them being
- flagged sick on startup during slow networking.
- - Allow devices that are disabled due to overheating to be flagged as recovering
- instead of disabling them and re-enable them if they're below ideal temperatures
- - Tahiti prefers worksize 64 with poclbm.
- - No need to expressly retain the opencl program now that the zero binary issue
- is fixed. This actually fixes cgminer to work with the latest SDK included with
- the ATI catalyst driver 12.2.
- - Show error code on any opencl failure status.
- - Add detection for version 898.1 SDK as well but only give SDK 2.6 warning once
- on startup instead of with each device initialisation.
- - Always use a fresh connection for longpoll as prolonged persistent connections
- can fail for many reasons.
- - Keep track of intended engine clock speed and only adjust up if it's higher
- than the last intended speed. This avoids setting the clock speed to one
- relative to a lower profile one by mistake.
- - Use gpu-memdiff on startup if an engine clockspeed is set and a memdiff value
- is set.
- - Revert "Adjust engine speed up according to performance level engine setting,
- not the current engine speed." - ineffectual.
- - Freeze the queues on all threads that are sent the pause message to prevent
- them trying to start up again with saved pings in their queues.
- - Updates to diakgcn kernel/
- - Consolidate all screen updates to the watchdog thread and touch both windows
- before refresh.
- - Curses will be disabled in clean_up so don't do it early in kill_work, and
- disable_adl so that GPU settings may be restored to normal in case shutting down
- curses leads to instability on windows.
- - Stop the mining threads before trying to kill them.
- - Plain refresh() does not give reliably screen updates so get rid of all uses
- of it.
- - First release with working diakgcn kernel.
- CGMiner Version 2.2.6 - February 16, 2012
- - Provide warning on each startup about sdk 2.6
- - Fix unused warnings on win32.
- - bitforce: Simplify BFopen WIN32 ifdef/else
- - Fix initialization warning with jansson 1.3
- - bitforce: Cleanup extraneous TODO that isn't needed
- - Move tcsetattr (and new tcflush) into *nix BFopen to simplify things a bit
- - Add message explaining 2nd thread disabling for dynamic mode and how to tune
- it.
- - Move logwindow down once number of devices is known.
- - Automatically choose phatk kernel for bitalign non-gcn ATI cards, and then
- only select poclbm if SDK2.6 is detected.
- - Allow the refresh interval to be adjusted in dynamic intensity with a
- --gpu-dyninterval parameter.
- - Make curses display visible right from the beginning and fix the window sizes
- so the initial messages don't get lost once the status window is drawn.
- - The amount of work scanned can fluctuate when intensity changes and since we
- do this one cycle behind, we increment the work more than enough to prevent
- repeati
- - bitforce: Set a 30 second timeout for serial port on Windows, since the
- default is undefined
- - Use PreVal4addT1 instead of PreVal4 in poclbm kernel.
- - Import PreVal4 and PreVal0 into poclbm kernel.
- - Import more prepared constants into poclbm kernel.
- - Keep variables in one array but use Vals[] name for consistency with other
- kernel designs.
- - Replace constants that are mandatorily added in poclbm kernel with one value.
- - Remove addition of final constant before testing for result in poclbm kernel.
- - Hand optimise variable addition order.
- - Hand optimise first variable declaration order in poclbm kernel.
- - Radical reordering machine based first pass to change variables as late as
- possible, bringing their usage close together.
- - fix strcpy NULL pointer if env HOME unset.
- - bitforce: Disable automatic scanning when at least one device is specified
- manually
- - Unroll all poclbm additions to enable further optimisations.
- CGMiner Version 2.2.5 - February 13, 2012
- - Make output buffer write only as per Diapolo's suggestion.
- - Constify nonce in poclbm.
- - Use local and group id on poclbm kernel as well.
- - Microoptimise phatk kernel on return code.
- - Adjust engine speed up according to performance level engine setting, not the
- current engine speed.
- - Try to load a binary if we've defaulted to the poclbm kernel on SDK2.6
- - Use the poclbm kernel on SDK2.6 with bitalign devices only if there is no
- binary available.
- - Further generic microoptimisations to poclbm kernel.
- - The longstanding generation of a zero sized binary appears to be due to the
- OpenCL library putting the binary in a RANDOM SLOT amongst 4 possible binary
- locations. Iterate over each of them after building from source till the real
- binary is found and use that.
- - Fix harmless warnings with -Wsign-compare to allow cgminer to build with -W.
- - Fix missing field initialisers warnings.
- - Put win32 equivalents of nanosleep and sleep into compat.h fixing sleep() for
- adl.c.
- - Restore compatibility with Jansson 1.3 and 2.0 (api.c required 2.1)
- - Modularized logging, support for priority based logging
- - Move CPU chipset specific optimization into device-cpu
- CGMiner Version 2.2.4 - February 11, 2012
- - Fix double definition of A0 B0 to zeroA zeroB.
- - Retain cl program after successfully loading a binary image. May decrease
- failures to build kernels at startup.
- - Variable unused after this so remove setting it.
- - BFI INT patching is not necessarily true on binary loading of files and not
- true on ATI SDK2.6+. Report bitalign instead.
- - Various string fixes for reject reason.
- - Generalize --temp-cutoff and implement support for reading temperature from
- BitFORCE FPGAs
- - Change message from recovered to alive since it is used on startup as well as
- when a pool has recovered.
- - Start mining as soon as any pool is found active and rely on the watchpool
- thread to bring up other pools.
- - Delayed responses from testing pools that are down can hold up the watchdog
- thread from getting to its device testing code, leading to false detection of
- the GPU not checking in, and can substantially delay auto gpu/auto fan
- management leading to overheating. Move pool watching to its own thread.
- - Bugfix: BitFORCE index needs to be static to count correctly
- - Space out retrieval of extra work according to the number of mining threads.
- - Make shutdown more robust. Enable the input thread only after the other
- threads exist. Don't kill off the workio thread and use it to exit main() only
- if there is an unexpected problem. Use kill_work() for all anticipated shutdowns
- where possible. Remove unused thread entry.
- - Change poclbm version number.
- - One array is faster than 2 separate arrays so change to that in poclbm kernel.
- - Microoptimisations to poclbm kernel which increase throughput slightly.
- - Import diablominer kernel. Currently disabled as not working.
- - Import diapolo kernel. Currently disabled as not working.
- - Conflicting entries of cl_kernel may have been causing problems, and
- automatically chosen kernel type was not being passed on. Rename the enum to
- cl_kernels and store the chosen kernel in each clState.
- - Set cl_amd_media_ops with the BITALIGN flag and allow non-bitselect devices to
- build.
- - ALlow much longer filenames for kernels to load properly.
- - Allow different kernels to be used by different devices and fix the logic fail
- of overcorrecting on last commit with !strstr.
- - Fix kernel selection process and build error.
- - queue_phatk_kernel now uses CL_SET_VARG() for base-nonce(s), too
- - added OpenCL >= 1.1 detection code, in preparation of OpenCL 1.1 global offset
- parameter support
- - Use K array explicitly to make it clear what is being added.
- - Work items have a tendency to expire at exactly the same time and we don't
- queue extra items when there are plenty in the queue, regardless of age. Allow
- extra work items to be queued if adequate time has passed since we last
- requested work even if over the limit.
- - Discard work when failover-only is enabled and the work has come from a
- different pool.
- - Missing include to build on newer mingw32.
- - Move from the thread safe localtime_r to regular localtime which is the only
- one supported on newer pthread libraries on mingw32 to make it compile with the
- newer ming. Thread safety is of no importance where localtime is used in this
- code.
- - Define in_addr_t in windows if required
- - sys/wait.h not required in windows
- - Allow API to restrict access by IP address
- - Add pool switching to example miner.php
- - Display X-Reject-Reason, when provided
- - Remove the test for whether the device is on the highest profil level before
- raising the GPU speed as it is ineffectual and may prevent raising the GPU
- speed.
- - Remove unnecessary check for opt_debug one every invocation of applog at
- LOG_DEBUG level and place the check in applog().
- CGMiner Version 2.2.3 - February 6, 2012
- - Revert "Rewrite the convoluted get_work() function to be much simpler and roll
- work as much as possible with each new work item." This seems to cause a race on
- work in free_work(). Presumably other threads are still accessing the structure.
- CGMiner Version 2.2.2 - February 6, 2012
- - Provide support for the submitold extension on a per-pool basis based on the
- value being detected in a longpoll.
- - Don't send a ping to a dynamic device if it's not enabled as that will just
- enable it for one pass and then disable it again.
- - Rewrite the convoluted get_work() function to be much simpler and roll work as
- much as possible with each new work item.
- - Roll as much work as possible from the work returned from a longpoll.
- - Rolling work on each loop through the mining thread serves no purpose.
- - Allow to stage more than necessary work items if we're just rolling work.
- - Replace divide_work with reuse_work function used twice.
- - Give rolled work a new ID to make sure there is no confusion in the hashtable
- lookups.
- - Remove now-defunct hash_div variables.
- - Remove unused get_dondata function.
- - Silence ADL warnings.
- - Silence unused parameter warnings.
- - Stagger the restart of every next thread per device to keep devices busy ahead
- of accessory threads per device.
- - Deprecate the --donation feature. Needlessly complex, questionable usefulness,
- depends on author's server and a central pool of some kind, and was not heavily
- adopted.
- - It's devices that report back now, not threads, update message.
- - Continue auto-management of fan and engine speeds even if a device is disabled
- for safety reasons.
- - No need to check we're highest performance level when throttling GPU engine
- speed.
- - Abstract out tests for whether work has come from a block that has been seen
- before and whether a string is from a previously seen block.
- - Probe but don't set the timeout to 15 seconds as some networks take a long
- time to timeout.
- - Remove most compiler warnings from api.c
- - Add last share's pool info in cgpu_info
- - Allow the OpenCL platform ID to be chosen with --gpu-platform.
- - Iterate over all platforms displaying their information and number of devices
- when --ndevs is called.
- - Deprecate main.c
- - Some networks can take a long time to resolve so go back to 60 second timeouts
- instead of 15.
- - Only enable curses on failure if curses is desired.
- - Fix warnings in bitforce.c
- - Bugfix: Need to open BitForce tty for read-write
- - Fix various build issues.
- - Modularize code: main.c -> device-cpu + device-gpu
- - Fix phatk kernel not working on non-bitalign capable devices (Nvidia, older
- ATI).
- - Update poclbm kernel for better performance on GCN and new SDKs with bitalign
- support when not BFI INT patching. Update phatk kernel to work properly for non
- BFI INT patched kernels, providing support for phatk to run on GCN and non-ATI
- cards.
- - Return last accepted share pool/time for devices
- - Display accepted share pool/time for CPUs
- - Bug intensity always shows GPU 0
- - Update example web miner.php to use new API commands
- CGMiner Version 2.2.1 - January 30, 2012
- NOTE - The GPU Device reordering in 2.2.0 by default was considered a bad idea
- so the original GPU ordering is used by default again unless reordering is
- explicitly requested.
- - Fix bitforce failing to build into cgminer.
- - Add missing options to write config function.
- - Add a --gpu-reorder option to only reorder devices according to PCI Bus ID
- when requested.
- - Fix for midstate support being broken on pools that supported no-midstate
- work by ensuring numbers are 32 bits in sha2.c
- - Set virtual GPUs to work when ADL is disabled or all mining will occur on GPU
- 0.
- - Add information about paused threads in the menu status.
- - Disable all but the first thread on GPUs in dynamic mode for better
- interactivity.
- - Set the latest network access time on share submission for --net-delay even if
- we're not delaying that submission for further network access.
- - Clear adl on exiting after probing values since it may attempt to overclock.
- - As share submission is usually staggered, and delays can be costly, submit
- shares without delay even when --net-delay is enabled.
- - Display GPU number and device name when ADL is successfully enabled on it.
- - Display GPU ordering remapping in verbose mode.
- - Don't fail in the case the number of ADL and OpenCL devices do not match, and
- do not attempt to reorder devices unless they match. Instead give a warning
- about
- - Display error codes should ADL not return ADL_OK in the more critical function
- calls.
- - Fix unused warning.
- - Fix compile warnings in api.c
- - Add extensive ADL based device info in debug mode.
- - Make --ndevs display verbose opencl information as well to make debugging
- version information easier.
- - Display information about the opencl platform with verbose enabled.
- - Explicitly check for nvidia in opencl platform strings as well.
- CGMiner Version 2.2.0 - January 29, 2012
- NOTE: GPU Device order will change with this release with ATI GPUs as cgminer
- now can enumerate them according to their Bus ID which means the values should
- now correlate with their physical position on the motherboard.
- - Default to poclbm kernel on Tahiti (7970) since phatk does not work, even
- though performance is sub-standard so that at least it will mine successfully by
- defau
- - Retain cl program after every possible place we might build the program.
- - Update ADL SDK URL.
- - Fix potential overflow.
- - Map GPU devices to virtual devices in their true physical order based on
- BusNumber.
- - Change the warning that comes with failure to init cl on a device to be more
- generic and accurate.
- - Advertise longpoll support in X-Mining-Extensions
- - Detect dual GPU cards by iterating through all GPUs, finding ones without
- fanspeed and matching twins with fanspeed one bus ID apart.
- - Do not attempt to build the program that becomes the kernel twice. This could
- have been leading to failures on initialising cl.
- - Some opencl compilers have issues with no spaces after -D in the compiler
- options.
- - Allow intensity up to 14.
- - Use calloced stack memory for CompilerOptions to ensure sprintf writes to the
- beginning of the char.
- - Whitelist 79x0 cards to prefer no vectors as they perform better without.
- - Adjust fan speed gently while in the optimal range when temperature is
- drifting to minimise overshoot in either direction.
- - Detect dual GPU cards via the indirect information of - 1st card has a fan
- controller. 2nd card does not have a fan controller, cards share the same device
- name
- - Instead of using the BFI_INT patching hack on any device reporting
- cl_amd_media_ops, create a whitelist of devices that need it. This should enable
- GCN architec
- - Fixed API compiling issue on OS X
- - Add more explanation of JSON format and the 'save' command
- - Return an error if using ADL API commands when it's not available
- - Read off lpThermalControllerInfo from each ADL device.
- - Add ADL_Overdrive5_ThermalDevices_Enum interface.
- - Add API commands: config, switchpool, gpu settings, save
- - Implement socks4 proxy support.
- - Fix send() for JSON strings
- - Introduce a --net-delay option which guarantees at least 250ms between any
- networking requests to not overload slow routers.
- - Generalise locking init code.
- - Allow invalid values to be in the configuration file, just skipping over them
- provided the rest of the file is valid JSON. This will allow older configurat
- - Allow CPU mining explicitly enable only if other mining support is built in.
- - BitForce FPGA support
- - Configure out building and support of all CPU mining code unless
- --enable-cpumining is enabled.
- - Allow parsed values to be zero which will allow 0 values in the config file to
- work.
- - Advertise that we can make our own midstate, so the pool can skip generating
- it for us
- - Refactor the CPU scanhash_* functions to use a common API. Fixes bugs.
- - Don't consider a pool lagging if a request has only just been filed. This
- should decrease the false positives for "pool not providing work fast enough".
- - Invalidating work after longpoll made hash_pop return no work giving a false
- positive for dead pool. Rework hash_pop to retry while finds no staged work u
- - Remove TCP_NODELAY from curl options as many small packets may be contributing
- to network overload, when --net-delay is enabled.
- - Refactor miner_thread to be common code for any kind of device
- - Simplify submit_nonce loop and avoid potentially missing FOUND - 1 entry.
- Reported by Luke-Jr.
- - Micro-optimisation in sha256_sse2 code courtesy of Guido Ascioti
- guido.ascioti@gmail.com
- - Refactor to abstract device-specific code
- CGMiner Version 2.1.2 - January 6, 2012
- - If api-description is specified, save it when writing the config file
- - Adjust utility width to be constant maximum as well.
- - Add percent signs to reject ratio outputs
- - Should the donation pool fail, don't make the fallover pool behave as though
- the primary pool is lagging.
- - Use an alternative pool should the donation getwork fail.
- CGMiner Version 2.1.1 - January 1, 2012
- - Include API examples in distribution tarball.
- - Don't attempt to pthread_join when cancelling threads as they're already
- detached and doing so can lead to a segfault.
- - Give more generic message if slow pool at startup is the donation pool.
- - Continue to attempt restarting GPU threads if they're flagged dead at 1 min.
- intervals.
- - Don't attempt to restart sick flagged GPUs while they're still registering
- activity.
- - Make curl use fresh connections whenever there is any communication issue
- in case there are dead persistent connections preventing further comms from
- working.
- - Display pool in summary if only 1 pool.
- - Adjust column width of A/R/HW to be the maximum of any device and align them.
- CGMiner Version 2.1.0 - December 27, 2011
- - Major infrastructure upgrade with RPC interface for controlling via sockets
- encoded with/without JSON courtesy of Andrew Smith. Added documentation for
- use of the API and sample code to use with it.
- - Updated linux-usb-cgminer document.
- - Rewrite of longpoll mechanism to choose the current pool wherever possible to
- use for the longpoll, or any pool that supports longpoll if the current one
- does not.
- - Display information about longpoll when the chosen server has changed.
- - Fix the bug where longpoll generated work may have been sent back to the
- wrong pool, causing rejects.
- - Fix a few race conditions on closing cgminer which caused some of the crashes
- on exit.
- - Only adjust gpu engine speed in autotune mode if the gpu is currently at the
- performance level of that being adjusted.
- - Various fixes for parsing/writing of configuration files.
- - Do not add blank lines for threads of unused CPUs.
- - Show which pool is unresponsive on startup.
- - Only show GPU management menu item if GPUs are in use.
- - Align most device columns in the curses display.
- CGMiner Version 2.0.8 - November 11, 2011
- - Make longpoll do a mandatory flushing of all work even if the block hasn't
- changed, thus supporting longpoll initiated work change of any sort and merged
- mining.
- - Byteswap computed hash in hashtest so it can be correctly checked. This fixes
- the very rare possibility that a block solve on solo mining was missed.
- - Add x86_64 w64 mingw32 target
- - Allow a fixed speed difference between memory and GPU clock speed with
- --gpu-memdiff that will change memory speed when GPU speed is changed in
- autotune mode.
- - Don't load the default config if a config file is specified on the command
- line.
- - Don't build VIA on apple since -a auto bombs instead of gracefully ignoring
- VIA failing.
- - Build fix for dlopen/dlclose errors in glibc.
- CGMiner Version 2.0.7 - October 17, 2011
- - Support work without midstate or hash1, which are deprecated in bitcoind 0.5+
- - Go to kernel build should we fail to clCreateProgramWithBinary instead of
- failing on that device. This should fix the windows problems with devices not
- initialising.
- - Support new configuration file format courtesy of Chris Savery which can write
- the config file from the menu and will load it on startup.
- - Write unix configuration to .cgminer/cgminer.conf by default and prompt to
- overwrite if given a filename from the menu that exists.
- CGMiner Version 2.0.6 - October 9, 2011
- - Must initialise the donorpool mutex or it fails on windows.
- - Don't make donation work interfere with block change detection allowing
- donation to work regardless of the block chain we're mining on.
- - Expire shares as stale with a separate timeout from the scantime, defaulting
- to 120 seconds.
- - Retry pools after a delay of 15 seconds if none can be contacted on startup
- unless a key is pressed.
- - Don't try to build adl features without having adl.
- - Properly check shares against target difficulty - This will no longer show
- shares when solo mining at all unless they're considered to be a block solve.
- - Add altivec 4 way (cpu mining) support courtesy of Gilles Risch.
- - Try to use SSL if the server supports it.
- - Display the total solved blocks on exit (LOL if you're lucky).
- - Use ADL activity report to tell us if a sick GPU is still busy suggesting it
- is hard hung and do not attempt to restart it.
- CGMiner Version 2.0.5 - September 27, 2011
- - Intensity can now be set to dynamic or static values per-device.
- - New donation feature --donation sends a proportion of shares to author's
- account of choice, but is disabled by default!
- - The hash being displayed and block detection has been fixed.
- - Devices not being mined on will not attempt to be ADL managed.
- - Intensity is now displayed per GPU device.
- - Make longpoll attempt to restart as often as opt_retries specifies.
- - We weren't rolling work as often as we could.
- - Correct some memory management issues.
- - Build fixes.
- - Don't mess with GPUs if we don't have them.
- CGMiner Version 2.0.4 - September 23, 2011
- - Confused Longpoll messages should be finally fixed with cgminer knowing for
- sure who found the new block and possibly avoiding a rare crash.
- - Display now shows the actual hash and will say BLOCK! if a block is deemed
- solved.
- - Extra spaces, which would double space lines on small terminals, have been
- removed.
- - Fan speed change is now damped if it is already heading in the correct
- direction to minimise overshoot.
- - Building without opencl libraries is fixed.
- - GPUs are autoselected if there is only one when in the GPU management menu.
- - GPU menu is refreshed instead of returning to status after a GPU change.
- CGMiner Version 2.0.3 - September 17, 2011
- - Various modes of failure to set fanspeeds and adl values have been addressed
- and auto-fan should work now on most hardware, and possibly other values
- which previously would not have worked.
- - Fixed a crash that can occur on switching pools due to longpoll thread races.
- - Use ATISTREAMSDKROOT if available at build time.
- - Fanspeed management is returned to the driver default on exit instead of
- whatever it was when cgminer was started.
- - Logging of events deemed WARNING or ERR now will display even during
- periods where menu input is being awaited on.
- CGMiner Version 2.0.2 - September 11, 2011
- - Exit cleanly if we abort before various threads are set up or if they no
- longer exist.
- - Fix a rare crash in HASH_DEL due to using different mutexes to protect the
- data.
- - Flag devices that have never started and don't allow enabling of devices
- without restarting them.
- - Only force the adapter speed to high if we've flagged this device as being
- managed.
- - Flag any devices with autofan or autogpu as being managed.
- - Use a re-entrant value to store what fanspeed we're trying to set in case the
- card doesn't support small changes. Force it to a multiple of 10% if it
- fails on trying to speed up the fan.
- - Do not bother resetting values to old ones if changes to GPU parameters report
- failure, instead returning a failure code only if the return value from get()
- differs.
- - Remove redundant check.
- - Only display supported values from fanspeed on change settings.
- - Missing bracket from output.
- - Display fan percentage on devices that only support reporting percent and not
- RPM.
- - Properly substitute DLOPEN flags to build with ADL support when -ldl is needed
- and not when opencl is not found.
- CGMiner Version 2.0.1 - September 9, 2011
- - Fix building on 32bit glibc with dlopen with -lpthread and -ldl
- - ByteReverse is not used and the bswap opcode breaks big endian builds. Remove
- it.
- - Ignore whether the display is active or not since only display enabled devices
- work this way, and we skip over repeat entries anwyay.
- - Only reset values on exiting if we've ever modified them.
- - Flag adl as active if any card is successfully activated.
- - Add a thermal cutoff option as well and set it to 95 degrees by default.
- - Change the fan speed by only 5% if it's over the target temperature but less
- than the hysteresis value to minimise overshoot down in temperature.
- - Add a --no-adl option to disable ADL monitoring and GPU settings.
- - Only show longpoll received delayed message at verbose level.
- - Allow temperatures greater than 100 degrees.
- - We should be passing a float for the remainder of the vddc values.
- - Implement accepting a range of engine speeds as well to allow a lower limit to
- be specified on the command line.
- - Allow per-device fan ranges to be set and use them in auto-fan mode.
- - Display which GPU has overheated in warning message.
- - Allow temperature targets to be set on a per-card basis on the command line.
- - Display fan range in autofan status.
- - Setting the hysteresis is unlikely to be useful on the fly and doesn't belong
- in the per-gpu submenu.
- - With many cards, the GPU summaries can be quite long so use a terse output
- line when showing them all.
- - Use a terser device status line to show fan RPM as well when available.
- - Define max gpudevices in one macro.
- - Allow adapterid 0 cards to enumerate as a device as they will be non-AMD
- cards, and enable ADL on any AMD card.
- - Do away with the increasingly confusing and irrelevant total queued and
- efficiency measures per device.
- - Only display values in the log if they're supported and standardise device log
- line printing.
- CGMiner Version 2.0.0 - September 6, 2011
- Major feature upgrade - GPU monitoring, (over)clocking and fan control for ATI
- GPUs.
- New command line switches:
- --auto-fan- Automatically adjust all GPU fan speeds to maintain a target
- temperature
- --auto-gpu- Automatically adjust all GPU engine clock speeds to maintain
- a target temperature
- --gpu-engine <arg> Set the GPU engine (over)clock in Mhz - one value for all or
- separate by commas for per card.
- --gpu-fan <arg> Set the GPU fan percentage - one value for all or separate
- by commas for per card.
- --gpu-memclock <arg> Set the GPU memory (over)clock in Mhz - one value for all
- or separate by commas for per card.
- --gpu-powertune <arg> Set the GPU powertune percentage - one value for all or
- separate by commas for per card.
- --gpu-vddc <arg> Set the GPU voltage in Volts - one value for all or separate
- by commas for per card.
- --temp-hysteresis <arg> Set how much the temperature can fluctuate outside
- limits when automanaging speeds (default: 3)
- --temp-overheat <arg> Set the overheat temperature when automatically managing
- fan and GPU speeds (default: 85)
- --temp-target <arg> Set the target temperature when automatically managing fan
- and GPU speeds (default: 75)
- - Implement ATI ADL support for GPU parameter monitoring now and setting later
- (temp, fan, clocks etc.).
- - Check for the presence of the ADL header files in ADL_SDK.
- - Import adl_functions.h from amd overdrive ctrl.
- - Implement a setup function that tries to detect GPUs that support the ADL and
- link in the parameters into the gpus struct.
- - Put a summary of monitoring information from the GPU menu.
- - Implement changing memory speed and voltage on the fly.
- - Implement fan speed setting.
- - Minor corrections to set fan speed by percentage.
- - Make sure to read off the value in RPM only.
- - Implement auto fanspeed adjustment to maintain a target temperature and
- fanspeed below 85%, with an overheat check that will speed the fan up to 100%.
- - Add an --auto-fan command line option to allow all GPUs to have autofan
- enabled from startup.
- - Add a gpu autotune option which adjusts GPU speed to maintain a target
- temperature within the bounds of the default GPU speed and any overclocking set.
- - Avoid a dereference if the longpoll thread doesn't exist.
- - Clean up by setting performance profiles and fan settings to startup levels on
- exit.
- - Add a small amount of hysteresis before lowering clock speed.
- - Allow target, overheat and hysteresis temperatures to be set from command
- line.
- - Combine all stats collating into one function to avoid repeating function
- calls on each variable.
- - Add gpu statistics to debugging output via the watchdog thread.
- - Implement menus to change temperature limits.
- - Implement setting the GPU engine clock speed of all devices or each device as
- a comma separated value.
- - Implement setting the GPU memory clock speed of all devices or each device as
- a comma separated value.
- - Implement setting the GPU voltage of all devices or each device as a comma
- separated value.
- - Implement setting the GPU fan speed of all devices or each device as a comma
- separated value.
- - Add support for monitoring powertune setting.
- - Implement changing of powertune value from the GPU change settings menu.
- - Get the value of powertune in get_stats.
- - Implement setting the GPU powertune value of all devices or each device as a
- comma separated value.
- - Remove the safety checks in speed setting since confirmation is done first in
- the menu, then show the new current values after a short pause.
- - Force the speed to high on startup and restore it to whatever the setting was
- on exit.
- - Add temperature to standard output where possible and use more compact output.
- - Move and print at the same time in curses to avoid random trampling display
- errors.
- - Update the status window only from the watchdog thread, do not rewrite the top
- status messages and only refresh once all the status window is complete,
- clearing the window each time to avoid corruption.
- - Set a safe starting fan speed if we're automanaging the speeds.
- - Provide locking around all adl calls to prevent races.
- - Lower profile settings cannot be higher than higher profile ones so link any
- drops in settings.
- - Add new needed text files to distribution.
- - Queue requests ignoring the number of staged clones since they get discarded
- very easily leading to false positives for pool not providing work fast enough.
- - Include libgen.h in opt.c to fix win32 compilation warnings.
- - Fix compilation warning on win32.
- - Add the directory name from the arguments cgminer was called from as well to
- allow it running from a relative pathname.
- - Add a --disable-adl option to configure and only enable it if opencl support
- exists.
- - Retry before returning a failure to get upstream work as a failure to avoid
- false positives for pool dead.
- - Retry also if the decoding of work fails.
- - Use the presence of X-Roll-Ntime in the header as a bool for exists unless N
- is found in the response.
- CGMiner Version 1.6.2 - September 2, 2011
- - Add --failover-only option to not leak work to backup pools when the primary
- pool is lagging.
- - Change recommendation to intensity 9 for dedicated miners.
- - Fix the bouncing short term value by allowing it to change dynamically when
- the latest value is very different from the rolling value, but damp the change
- when it gets close.
- - Use the curses_lock to protect the curses_active variable and test it under
- lock.
- - Go back to requesting work 2/3 of the way through the current scantime with
- CPU mining as reports of mining threads running out of work have occurred with
- only 5 seconds to retrieve work.
- - Add start and stop time scheduling for regular time of day running or once off
- start/stop options.
- - Print summary on quit modes.
- - Put some sanity checks on the times that can be input.
- - Give a verbose message when no active pools are found and pause before
- exiting.
- - Add verbose message when a GPU fails to initialise, and disable the correct
- GPU.
- - Cryptopp asm32 was not correctly updated to the incremental nonce code so the
- hash counter was bogus.
- - Get rid of poorly executed curl check.
- - If curl does not have sockopts, do not try to compile the
- json_rpc_call_sockopt_cb function, making it possible to build against older
- curl libraries.
- - Most people expect /usr/local when an unspecified prefix is used so change to
- that.
- - Rename localgen occasions to getwork fail occasions since localgen is
- unrelated now.
- CGMiner Version 1.6.1 - August 29, 2011
- - Copy cgminer path, not cat it.
- - Switching between redrawing windows does not fix the crash with old
- libncurses, so redraw both windows, but only when the window size hasn't
- changed.
- - Reinstate minimum 1 extra in queue to make it extremely unlikely to ever have
- 0 staged work items and any idle time.
- - Return -1 if no input is detected from the menu to prevent it being
- interpreted as a 0.
- - Make pthread, libcurl and libcurses library checks mandatory or fail.
- - Add a --disable-opencl configure option to make it possible to override
- detection of opencl and build without GPU mining support.
- - Confusion over the variable name for number of devices was passing a bogus
- value which likely was causing the zero sized binary issue.
- - cgminer no longer supports default url user and pass so remove them.
- - Don't show value of intensity since it's dynamic by default.
- - Add options to explicitly enable CPU mining or disable GPU mining.
- - Convert the opt queue into a minimum number of work items to have queued
- instead of an extra number to decrease risk of getting idle devices without
- increasing risk of higher rejects.
- - Statify tv_sort.
- - Check for SSE2 before trying to build 32 bit SSE2 assembly version. Prevents
- build failure when yasm is installed but -msse2 is not specified.
- - Add some defines to configure.ac to enable exporting of values and packaging,
- and clean up output.
- - Give convenient summary at end of ./configure.
- - Display version information and add --version command line option, and make
- sure we flush stdout.
- - Enable curses after the mining threads are set up so that failure messages
- won't be lost in the curses interface.
- - Disable curses after inputting a pool if we requested no curses interface.
- - Add an option to break out after successfully mining a number of accepted
- shares.
- - Exit with a failed return code if we did not reach opt_shares.
- - The cpu mining work data can get modified before we copy it if we submit it
- async, and the sync submission is not truly sync anyway, so just submit it sync.
- CGMiner Version 1.6.0 - August 26, 2011
- - Make restarting of GPUs optional for systems that hang on any attempt to
- restart them. Fix DEAD status by comparing it to last live time rather than
- last attempted restart time since that happens every minute.
- - Move staged threads to hashes so we can sort them by time.
- - Create a hash list of all the blocks created and search them to detect when a
- new block has definitely appeared, using that information to detect stale work
- and discard it.
- - Update configure.ac for newer autoconf tools.
- - Use the new hashes directly for counts instead of the fragile counters
- currently in use.
- - Update to latest sse2 code from cpuminer-ng.
- - Allow LP to reset block detect and block detect lp flags to know who really
- came first.
- - Get start times just before mining begins to not have very slow rise in
- average.
- - Add message about needing one server.
- - We can queue all the necessary work without hitting frequent stales now with
- the time and string stale protection active all the time. This prevents a
- pool being falsely labelled as not providing work fast enough.
- - Include uthash.h in distro.
- - Implement SSE2 32 bit assembly algorithm as well.
- - Fail gracefully if unable to open the opencl files.
- - Make cgminer look in the install directory for the .cl files making make
- install work correctly.
- - Allow a custom kernel path to be entered on the command line.
- - Bump threshhold for lag up to maximum queued but no staged work.
- - Remove fragile source patching for bitalign, vectors et. al and simply pass it
- with the compiler options.
- - Actually check the value returned for the x-roll-ntime extension to make sure
- it isn't saying N.
- - Prevent segfault on exit for when accessory threads don't exist.
- - Disable curl debugging with opt protocol since it spews to stderr.
- CGMiner Version 1.5.8 - August 23, 2011
- - Minimise how much more work can be given in cpu mining threads each interval.
- - Make the fail-pause progressively longer each time it fails until the network
- recovers.
- - Only display the lagging message if we've requested the work earlier.
- - Clean up the pool switching to not be dependent on whether the work can roll
- or not by setting a lagging flag and then the idle flag.
- - Only use one thread to determine if a GPU is sick or well, and make sure to
- reset the sick restart attempt time.
- - The worksize was unintentionally changed back to 4k by mistake, this caused a
- slowdown.
- CGMiner Version 1.5.7 - August 22, 2011
- - Fix a crash with --algo auto
- - Test at appropriate target difficulty now.
- - Add per-device statics log output with --per-device-stats
- - Fix breakage that occurs when 1 or 4 vectors are chosen on new phatk.
- - Make rolltime report debug level only now since we check it every work
- item.
- - Add the ability to enable/disable per-device stats on the fly and match
- logging on/off.
- - Explicitly tell the compiler to retain the program to minimise the chance of
- the zero sized binary errors.
- - Add one more instruction to avoid one branch point in the common path in the
- cl return code. Although this adds more ALUs overall and more branch points, the
- common path code has the same number of ALUs and one less jmp, jmps being more
- expensive.
- - Explicitly link in ws2_32 on the windows build and update README file on how
- to compile successfully on windows.
- - Release cl resources should the gpu mining thread abort.
- - Attempt to restart a GPU once every minute while it's sick.
- - Don't kill off the reinit thread if it fails to init a GPU but returns safely.
- - Only declare a GPU dead if there's been no sign of activity from the reinit
- thread for 10 mins.
- - Never automatically disable any pools but just specify them as idle if they're
- unresponsive at startup.
- - Use any longpoll available, and don't disable it if switching to a server that
- doesn't have it. This allows you to mine solo, yet use the longpoll from a pool
- even if the pool is the backup server.
- - Display which longpoll failed and don't free the ram for lp_url since it
- belongs to the pool hdr path.
- - Make the tcp setsockopts unique to linux in the hope it allows freebsd et. al
- to compile.
- CGMiner Version 1.5.6 - August 17, 2011
- - New phatk and poclbm kernels. Updated phatk to be in sync with latest 2.2
- courtesy of phateus. Custom modified to work best with cgminer.
- - Updated output buffer code to use a smaller buffer with the kernels.
- - Clean up the longpoll management to ensure the right paths go to the right
- pool and display whether we're connected to LP or not in the status line.
- CGMiner Version 1.5.5 - August 16, 2011
- - Rework entirely the GPU restart code. Strike a balance between code that
- re-initialises the GPU entirely so that soft hangs in the code are properly
- managed, but if a GPU is completely hung, the thread restart code fails
- gracefully, so that it does not take out any other code or devices. This will
- allow cgminer to keep restarting GPUs that can be restarted, but continue
- mining even if one or more GPUs hangs which would normally require a reboot.
- - Add --submit-stale option which submits all shares, regardless of whether they
- would normally be considered stale.
- - Keep options in alphabetical order.
- - Probe for slightly longer for when network conditions are lagging.
- - Only display the CPU algo when we're CPU mining.
- - As we have keepalives now, blaming network flakiness on timeouts appears to
- have been wrong. Set a timeout for longpoll to 1 hour, and most other
- network connectivity to 1 minute.
- - Simplify output code and remove HW errors from CPU stats.
- - Simplify code and tidy output.
- - Only show cpu algo in summary if cpu mining.
- - Log summary at the end as per any other output.
- - Flush output.
- - Add a linux-usb-cgminer guide courtesy of Kano.
- CGMiner Version 1.5.4 - August 14, 2011
- - Add new option: --monitor <cmd> Option lets user specify a command <cmd> that
- will get forked by cgminer on startup. cgminer's stderr output subsequently gets
- piped directly to this command.
- - Allocate work from one function to be able to initialise variables added
- later.
- - Add missing fflush(stdout) for --ndevs and conclusion summary.
- - Preinitialise the devices only once on startup.
- - Move the non cl_ variables into the cgpu info struct to allow creating a new
- cl state on reinit, preserving known GPU variables.
- - Create a new context from scratch in initCQ in case something was corrupted to
- maximise our chance of succesfully creating a new worker thread. Hopefully this
- makes thread restart on GPU failure more reliable, without hanging everything
- in the case of a completely wedged GPU.
- - Display last initialised time in gpu management info, to know if a GPU has
- been re-initialised.
- - When pinging a sick cpu, flush finish and then ping it in a separate thread in
- the hope it recovers without needing a restart, but without blocking code
- elsewhere.
- - Only consider a pool lagging if we actually need the work and we have none
- staged despite queue requests stacking up. This decreases significantly the
- amount of work that leaks to the backup pools.
- - The can_roll function fails inappropriately in stale_work.
- - Only put the message that a pool is down if not pinging it every minute. This
- prevents cgminer from saying pool down at 1 minute intervals unless in debug
- mode.
- - Free all work in one place allowing us to perform actions on it in the future.
- - Remove the extra shift in the output code which was of dubious benefit. In
- fact in cgminer's implementation, removing this caused a miniscule speedup.
- - Test each work item to see if it can be rolled instead of per-pool and roll
- whenever possible, adhering to the 60 second timeout. This makes the period
- after a longpoll have smaller dips in throughput, as well as requiring less
- getworks overall thus increasing efficiency.
- - Stick to rolling only work from the current pool unless we're in load balance
- mode or lagging to avoid aggressive rolling imitating load balancing.
- - If a work item has had any mining done on it, don't consider it discarded
- work.
- CGMiner Version 1.5.3 - July 30, 2011
- - Significant work went into attempting to make the thread restart code robust
- to identify sick threads, tag them SICK after 1 minute, then DEAD after 5
- minutes of inactivity and try to restart them. Instead of re-initialising the
- GPU completely, only a new cl context is created to avoid hanging the rest of
- the GPUs should the dead GPU be hung irrevocably.
- - Use correct application name in syslog.
- - Get rid of extra line feeds.
- - Use pkg-config to check for libcurl version
- - Implement per-thread getwork count with proper accounting to not over-account
- queued items when local work replaces it.
- - Create a command queue from the program created from source which allows us
- to flush the command queue in the hope it will not generate a zero sized binary
- any more.
- - Be more willing to get work from the backup pools if the work is simply being
- queued faster than it is being retrieved.
- CGMiner Version 1.5.2 - July 28, 2011
- - Restarting a hung GPU can hang the rest of the GPUs so just declare it dead
- and provide the information in the status.
- - The work length in the miner thread gets smaller but doesn't get bigger if
- it's under 1 second. This could end up leading to CPU under-utilisation and
- lower and lower hash rates. Fix it by increasing work length if it drops
- under 1 second.
- - Make the "quiet" mode still update the status and display errors, and add a
- new --real-quiet option which disables all output and can be set once while
- running.
- - Update utility and efficiency figures when displaying them.
- - Some Intel HD graphics support the opencl commands but return errors since
- they don't support opencl. Don't fail with them, just provide a warning and
- disable GPU mining.
- - Add http:// if it's not explicitly set for URL entries.
- - Log to the output file at any time with warnings and errors, instead of just
- when verbose mode is on.
- - Display the correct current hash as per blockexplorer, truncated to 16
- characters, with just the time.
- CGMiner Version 1.5.1 - July 27, 2011
- - Two redraws in a row cause a crash in old libncurses so just do one redraw
- using the main window.
- - Don't adjust hash_div only up for GPUs. Disable hash_div adjustment for GPUs.
- - Only free the thread structures if the thread still exists.
- - Update both windows separately, but not at the same time to prevent the double
- refresh crash that old libncurses has. Do the window resize check only when
- about to redraw the log window to minimise ncurses cpu usage.
- - Abstract out the decay time function and use it to make hash_div a rolling
- average so it doesn't change too abruptly and divide work in chunks large enough
- to guarantee they won't overlap.
- - Sanity check to prove locking.
- - Don't take more than one lock at a time.
- - Make threads report out when they're queueing a request and report if they've
- failed.
- - Make cpu mining work submission asynchronous as well.
- - Properly detect stale work based on time from staging and discard instead of
- handing on, but be more lax about how long work can be divided for up to the
- scantime.
- - Do away with queueing work separately at the start and let each thread grab
- its own work as soon as it's ready.
- - Don't put an extra work item in the queue as each new device thread will do so
- itself.
- - Make sure to decrease queued count if we discard the work.
- - Attribute split work as local work generation.
- - If work has been cloned it is already at the head of the list and when being
- reinserted into the queue it should be placed back at the head of the list.
- - Dividing work is like the work is never removed at all so treat it as such.
- However the queued bool needs to be reset to ensure we *can* request more work
- even if we didn't initially.
- - Make the display options clearer.
- - Add debugging output to tq_push calls.
- - Add debugging output to all tq_pop calls.
- CGMiner Version 1.5.0 - July 26, 2011
- - Increase efficiency of slow mining threads such as CPU miners dramatically. Do
- this by detecting which threads cannot complete searching a work item within the
- scantime and then divide up a work item into multiple smaller work items.
- Detect the age of the work items and if they've been cloned before to prevent
- doing the same work over. If the work is too old to be divided, then see if it
- can be time rolled and do that to generate work. This dramatically decreases the
- number of queued work items from a pool leading to higher overall efficiency
- (but the same hashrate and share submission rate).
- - Don't request work too early for CPUs as CPUs will scan for the full
- opt_scantime anyway.
- - Simplify gpu management enable/disable/restart code.
- - Implement much more accurate rolling statistics per thread and per gpu and
- improve accuracy of rolling displayed values.
- - Make the rolling log-second average more accurate.
- - Add a menu to manage GPUs on the fly allowing you to enable/disable GPUs or
- try restarting them.
- - Keep track of which GPUs are alive versus enabled.
- - Start threads for devices that are even disabled, but don't allow them to
- start working.
- - The last pool is when we are low in total_pools, not active_pools.
- - Make the thread restart do a pthread_join after disabling the device, only
- re-enabling it if we succeed in restarting the thread. Do this from a separate
- thread so as to not block any other code.This will allow cgminer to continue
- even if one GPU hangs.
- - Try to do every curses manipulation under the curses lock.
- - Only use the sockoptfunction if the version of curl is recent enough.
- CGMiner Version 1.4.1 - July 24, 2011
- - Do away with GET for dealing with longpoll forever. POST is the one that works
- everywhere, not the other way around.
- - Detect when the primary pool is lagging and start queueing requests on backup
- pools if possible before needing to roll work.
- - Load balancing puts more into the current pool if there are disabled pools.
- Fix.
- - Disable a GPU device should the thread fail to init.
- - Out of order command queue may fail on osx. Try without if it fails.
- - Fix possible dereference on blank inputs during input_pool.
- - Defines missing would segfault on --help when no sse mining is built in.
- - Revert "Free up resources/stale compilers." - didn't help.
- - Only try to print the status of active devices or it would crash.
- - Some hardware might benefit from the less OPS so there's no harm in leaving
- kernel changes that do that apart from readability of the code.
- CGMiner Version 1.4.0 - July 23, 2011
- - Feature upgrade: Add keyboard input during runtime to allow modification of
- and viewing of numerous settings such as adding/removing pools, changing
- multipool management strategy, switching pools, changing intensiy, verbosity,
- etc. with a simple keypress menu system.
- - Free up resources/stale compilers.
- - Kernels are safely flushed in a way that allows out of order execution to
- work.
- - Sometimes the cl compiler generates zero sized binaries and only a reboot
- seems to fix it.
- - Don't try to stop/cancel threads that don't exist.
- - Only set option to show devices and exit if built with opencl support.
- - Enable curses earlier and exit with message in main for messages to not be
- lost in curses windows.
- - Make it possible to enter server credentials with curses input if none are
- specified on the command line.
- - Abstract out a curses input function and separate input pool function to allow
- for live adding of pools later.
- - Remove the nil arguments check to allow starting without parameters.
- - Disable/enable echo & cbreak modes.
- - Add a thread that takes keyboard input and allow for quit, silent, debug,
- verbose, normal, rpc protocol debugging and clear screen options.
- - Add pool option to input and display current pool status, pending code to
- allow live changes.
- - Add a bool for explicit enabling/disabling of pools.
- - Make input pool capable of bringing up pools while running.
- - Do one last check of the work before submitting it.
- - Implement the ability to live add, enable, disable, and switch to pools.
- - Only internally test for block changes when the work matches the current pool
- to prevent interleaved block change timing on multipools.
- - Display current pool management strategy to enable changing it on the fly.
- - The longpoll blanking of the current_block data may not be happening before
- the work is converted and appears to be a detected block change. Blank the
- current block be
- - Make --no-longpoll work again.
- - Abstract out active pools count.
- - Allow the pool strategy to be modified on the fly.
- - Display pool information on the fly as well.
- - Add a menu and separate out display options.
- - Clean up the messy way the staging thread communicates with the longpoll
- thread to determine who found the block first.
- - Make the input windows update immediately instead of needing a refresh.
- - Allow log interval to be set in the menu.
- - Allow scan settings to be modified at runtime.
- - Abstract out the longpoll start and explicitly restart it on pool change.
- - Make it possible to enable/disable longpoll.
- - Set priority correctly on multipools. Display priority and alive/dead
- information in display_pools.
- - Implement pool removal.
- - Limit rolltime work generation to 10 iterations only.
- - Decrease testing log to info level.
- - Extra refresh not required.
- - With huge variation in GPU performance, allow intensity to go from -10 to +10.
- - Tell getwork how much of a work item we're likely to complete for future
- splitting up of work.
- - Remove the mandatory work requirement at startup by testing for invalid work
- being passed which allows for work to be queued immediately. This also
- removes the requirem
- - Make sure intensity is carried over to thread count and is at least the
- minimum necessary to work.
- - Unlocking error on retry. Locking unnecessary anyway so remove it.
- - Clear log window from consistent place. No need for locking since logging is
- disabled during input.
- - Cannot print the status of threads that don't exist so just queue enough work
- for the number of mining threads to prevent crash with -Q N.
- - Update phatk kernel to one with new parameters for slightly less overhead
- again. Make the queue kernel parameters call a function pointer to select
- phatk or poclbm.
- - Make it possible to select the choice of kernel on the command line.
- - Simplify the output part of the kernel. There's no demonstrable advantage from
- more complexity.
- - Merge pull request #18 from ycros/cgminer
- - No need to make leaveok changes win32 only.
- - Build support in for all SSE if possible and only set the default according to
- machine capabilities.
- - Win32 threading and longpoll keepalive fixes.
- - Win32: Fix for mangled output on the terminal on exit.
- CGMiner Version 1.3.1 - July 20, 2011
- - Feature upgrade; Multiple strategies for failover. Choose from default which
- now falls back to a priority order from 1st to last, round robin which only
- changes pools when one is idle, rotate which changes pools at user-defined
- intervals, and load-balance which spreads the work evenly amongst all pools.
- - Implement pool rotation strategy.
- - Implement load balancing algorithm by rotating requests to each pool.
- - Timeout on failed discarding of staged requests.
- - Implement proper flagging of idle pools, test them with the watchdog thread,
- and failover correctly.
- - Move pool active test to own function.
- - Allow multiple strategies to be set for multipool management.
- - Track pool number.
- - Don't waste the work items queued on testing the pools at startup.
- - Reinstate the mining thread watchdog restart.
- - Add a getpoll bool into the thread information and don't restart threads stuck
- waiting on work.
- - Rename the idlenet bool for the pool for later use.
- - Allow the user/pass userpass urls to be input in any order.
- - When json rpc errors occur they occur in spits and starts, so trying to limit
- them with the comms error bool doesn't stop a flood of them appearing.
- - Reset the queued count to allow more work to be queued for the new pool on
- pool switch.
- CGMiner Version 1.3.0 - July 19, 2011
- - Massive infrastructure update to support pool failover.
- - Accept multiple parameters for url, user and pass and set up structures of
- pool data accordingly.
- - Probe each pool for what it supports.
- - Implement per pool feature support according to rolltime support as
- advertised by server.
- - Do switching automatically based on a 300 second timeout of locally generated
- work or 60 seconds of no response from a server that doesn't support rolltime.
- - Implement longpoll server switching.
- - Keep per-pool data and display accordingly.
- - Make sure cgminer knows how long the pool has actually been out for before
- deeming it a prolonged outage.
- - Fix bug with ever increasing staged work in 1.2.8 that eventually caused
- infinite rejects.
- - Make warning about empty http requests not show by default since many
- servers do this regularly.
- CGMiner Version 1.2.8 - July 18, 2011
- - More OSX build fixes.
- - Add an sse4 algorithm to CPU mining.
- - Fix CPU mining with other algorithms not working.
- - Rename the poclbm file to ensure a new binary is built since.
- - We now are guaranteed to have one fresh work item after a block change and we
- should only discard staged requests.
- - Don't waste the work we retrieve from a longpoll.
- - Provide a control lock around global bools to avoid racing on them.
- - Iterating over 1026 nonces when confirming data from the GPU is old code
- and unnecessary and can lead to repeats/stales.
- - The poclbm kernel needs to be updated to work with the change to 4k sized
- output buffers.
- - longpoll seems to work either way with post or get but some servers prefer
- get so change to httpget.
- CGMiner Version 1.2.7 - July 16, 2011
- - Show last 8 characters of share submitted in log.
- - Display URL connected to and user logged in as in status.
- - Display current block and when it was started in the status line.
- - Only pthread_join the mining threads if they exist as determined by
- pthread_cancel and don't fail on pthread_cancel.
- - Create a unique work queue for all getworks instead of binding it to thread 0
- to avoid any conflict over thread 0's queue.
- - Clean up the code to make it clear it's watchdog thread being messaged to
- restart the threads.
- - Check the current block description hasn't been blanked pending the real
- new current block data.
- - Re-enable signal handlers once the signal has been received to make it
- possible to kill cgminer if it fails to shut down.
- - Disable restarting of CPU mining threads pending further investigation.
- - Update longpoll messages.
- - Add new block data to status line.
- - Fix opencl tests for osx.
- - Only do local generation of work if the work item is not stale itself.
- - Check for stale work within the mining threads and grab new work if
- positive.
- - Test for idle network conditions and prevent threads from being restarted
- by the watchdog thread under those circumstances.
- - Make sure that local work generation does not continue indefinitely by
- stopping it after 10 minutes.
- - Tweak the kernel to have a shorter path using a 4k buffer and a mask on the
- nonce value instead of a compare and loop for a shorter code path.
- - Allow queue of zero and make that default again now that we can track how
- work is being queued versus staged. This can decrease reject rates.
- - Queue precisely the number of mining threads as longpoll_staged after a
- new block to not generate local work.
- CGMiner Version 1.2.6 - July 15, 2011
- - Put a current system status line beneath the total work status line
- - Fix a counting error that would prevent cgminer from correctly detecting
- situations where getwork was failing - this would cause stalls sometimes
- unrecoverably.
- - Limit the maximum number of requests that can be put into the queue which
- otherwise could get arbitrarily long during a network outage.
- - Only count getworks that are real queue requests.
- CGMiner Version 1.2.5 - July 15, 2011
- - Conflicting -n options corrected
- - Setting an intensity with -I disables dynamic intensity setting
- - Removed option to manually disable dynamic intensity
- - Improve display output
- - Implement signal handler and attempt to clean up properly on exit
- - Only restart threads that are not stuck waiting on mandatory getworks
- - Compatibility changes courtesy of Ycros to build on mingw32 and osx
- - Explicitly grab first work item to prevent false positive hardware errors
- due to working on uninitialised work structs
- - Add option for non curses --text-only output
- - Ensure we connect at least once successfully before continuing to retry to
- connect in case url/login parameters were wrong
- - Print an executive summary when cgminer is terminated
- - Make sure to refresh the status window
- CGMiner Versions -> 1.2.4
- - Con Kolivas - July 2011. New maintainership of code under cgminer name.
- - Massive rewrite to incorporate GPU mining.
- - Incorporate original oclminer c code.
- - Rewrite gpu mining code to efficient work loops.
- - Implement per-card detection and settings.
- - Implement vector code.
- - Implement bfi int patching.
- - Import poclbm and phatk ocl kernels and use according to hardware type.
- - Implement customised optimised versions of opencl kernels.
- - Implement binary kernel generation and loading.
- - Implement preemptive asynchronous threaded work gathering and pushing.
- - Implement variable length extra work queues.
- - Optimise workloads to be efficient miners instead of getting lots of extra
- work.
- - Implement total hash throughput counters, per-card accepted, rejected and
- hw error count.
- - Staging and watchdog threads to prevent fallover.
- - Stale and reject share guarding.
- - Autodetection of new blocks without longpoll.
- - Dynamic setting of intensity to maintain desktop interactivity.
- - Curses interface with generous statistics and information.
- - Local generation of work (xroll ntime) when detecting poor network
- connectivity.
- cpuminer Version 1.0.2
- - Linux x86_64 optimisations - Con Kolivas
- - Optimise for x86_64 by default by using sse2_64 algo
- - Detects CPUs and sets number of threads accordingly
- - Uses CPU affinity for each thread where appropriate
- - Sets scheduling policy to lowest possible
- - Minor performance tweaks
- cpuminer Version 1.0.1 - May 14, 2011
- - OSX support
- cpuminer Version 1.0 - May 9, 2011
- - jansson 2.0 compatibility
- - correct off-by-one in date (month) display output
- - fix platform detection
- - improve yasm configure bits
- - support full URL, in X-Long-Polling header
- cpuminer Version 0.8.1 - March 22, 2011
- - Make --user, --pass actually work
- - Add User-Agent HTTP header to requests, so that server operators may
- more easily identify the miner client.
- - Fix minor bug in example JSON config file
- cpuminer Version 0.8 - March 21, 2011
- - Support long polling: http://deepbit.net/longpolling.php
- - Adjust max workload based on scantime (default 5 seconds,
- or 60 seconds for longpoll)
- - Standardize program output, and support syslog on Unix platforms
- - Suport --user/--pass options (and "user" and "pass" in config file),
- as an alternative to the current --userpass
- cpuminer Version 0.7.2 - March 14, 2011
- - Add port of ufasoft's sse2 assembly implementation (Linux only)
- This is a substantial speed improvement on Intel CPUs.
- - Move all JSON-RPC I/O to separate thread. This reduces the
- number of HTTP connections from one-per-thread to one, reducing resource
- usage on upstream bitcoind / pool server.
- cpuminer Version 0.7.1 - March 2, 2011
- - Add support for JSON-format configuration file. See example
- file example-cfg.json. Any long argument on the command line
- may be stored in the config file.
- - Timestamp each solution found
- - Improve sha256_4way performance. NOTE: This optimization makes
- the 'hash' debug-print output for sha256_way incorrect.
- - Use __builtin_expect() intrinsic as compiler micro-optimization
- - Build on Intel compiler
- - HTTP library now follows HTTP redirects
- cpuminer Version 0.7 - February 12, 2011
- - Re-use CURL object, thereby reuseing DNS cache and HTTP connections
- - Use bswap_32, if compiler intrinsic is not available
- - Disable full target validation (as opposed to simply H==0) for now
- cpuminer Version 0.6.1 - February 4, 2011
- - Fully validate "hash < target", rather than simply stopping our scan
- if the high 32 bits are 00000000.
- - Add --retry-pause, to set length of pause time between failure retries
- - Display proof-of-work hash and target, if -D (debug mode) enabled
- - Fix max-nonce auto-adjustment to actually work. This means if your
- scan takes longer than 5 seconds (--scantime), the miner will slowly
- reduce the number of hashes you work on, before fetching a new work unit.
- cpuminer Version 0.6 - January 29, 2011
- - Fetch new work unit, if scanhash takes longer than 5 seconds (--scantime)
- - BeeCee1's sha256 4way optimizations
- - lfm's byte swap optimization (improves via, cryptopp)
- - Fix non-working short options -q, -r
- cpuminer Version 0.5 - December 28, 2010
- - Exit program, when all threads have exited
- - Improve JSON-RPC failure diagnostics and resilience
- - Add --quiet option, to disable hashmeter output.
- cpuminer Version 0.3.3 - December 27, 2010
- - Critical fix for sha256_cryptopp 'cryptopp_asm' algo
- cpuminer Version 0.3.2 - December 23, 2010
- - Critical fix for sha256_via
- cpuminer Version 0.3.1 - December 19, 2010
- - Critical fix for sha256_via
- - Retry JSON-RPC failures (see --retry, under "minerd --help" output)
- cpuminer Version 0.3 - December 18, 2010
- - Add crypto++ 32bit assembly implementation
- - show version upon 'minerd --help'
- - work around gcc 4.5.x bug that killed 4way performance
- cpuminer Version 0.2.2 - December 6, 2010
- - VIA padlock implementation works now
- - Minor build and runtime fixes
- cpuminer Version 0.2.1 - November 29, 2010
- - avoid buffer overflow when submitting solutions
- - add Crypto++ sha256 implementation (C only, ASM elided for now)
- - minor internal optimizations and cleanups
- cpuminer Version 0.2 - November 27, 2010
- - Add script for building a Windows installer
- - improve hash performance (hashmeter) statistics
- - add tcatm 4way sha256 implementation
- - Add experimental VIA Padlock sha256 implementation
- cpuminer Version 0.1.2 - November 26, 2010
- - many small cleanups and micro-optimizations
- - build win32 exe using mingw
- - RPC URL, username/password become command line arguments
- - remove unused OpenSSL dependency
- cpuminer Version 0.1.1 - November 24, 2010
- - Do not build sha256_generic module separately from cpuminer.
- cpuminer Version 0.1 - November 24, 2010
- - Initial release.
|