asic_rs/miners/factory/
hardware.rs

1use crate::data::device::MinerHardware;
2use crate::data::device::models::antminer::AntMinerModel;
3use crate::data::device::models::avalon::AvalonMinerModel;
4use crate::data::device::models::bitaxe::BitaxeModel;
5use crate::data::device::models::braiins::BraiinsModel;
6use crate::data::device::models::epic::EPicModel;
7use crate::data::device::models::whatsminer::WhatsMinerModel;
8
9impl From<&AvalonMinerModel> for MinerHardware {
10    fn from(value: &AvalonMinerModel) -> Self {
11        match value {
12            AvalonMinerModel::Avalon721 => Self {
13                boards: Some(4),
14                chips: Some(18),
15                fans: Some(1),
16            },
17            AvalonMinerModel::Avalon741 => Self {
18                boards: Some(4),
19                chips: Some(22),
20                fans: Some(1),
21            },
22            AvalonMinerModel::Avalon761 => Self {
23                boards: Some(4),
24                chips: Some(18),
25                fans: Some(1),
26            },
27            AvalonMinerModel::Avalon821 => Self {
28                boards: Some(4),
29                chips: Some(26),
30                fans: Some(1),
31            },
32            AvalonMinerModel::Avalon841 => Self {
33                boards: Some(4),
34                chips: Some(26),
35                fans: Some(1),
36            },
37            AvalonMinerModel::Avalon851 => Self {
38                boards: Some(4),
39                chips: Some(26),
40                fans: Some(1),
41            },
42            AvalonMinerModel::Avalon921 => Self {
43                boards: Some(4),
44                chips: Some(26),
45                fans: Some(1),
46            },
47            AvalonMinerModel::Avalon1026 => Self {
48                boards: Some(3),
49                chips: Some(80),
50                fans: Some(2),
51            },
52            AvalonMinerModel::Avalon1047 => Self {
53                boards: Some(3),
54                chips: Some(80),
55                fans: Some(2),
56            },
57            AvalonMinerModel::Avalon1066 => Self {
58                boards: Some(3),
59                chips: Some(114),
60                fans: Some(4),
61            },
62            AvalonMinerModel::Avalon1126Pro => Self {
63                boards: Some(3),
64                chips: Some(120),
65                fans: Some(4),
66            },
67            AvalonMinerModel::Avalon1166Pro => Self {
68                boards: Some(3),
69                chips: Some(120),
70                fans: Some(4),
71            },
72            AvalonMinerModel::Avalon1246 => Self {
73                boards: Some(3),
74                chips: Some(120),
75                fans: Some(4),
76            },
77            AvalonMinerModel::Avalon1566 => Self {
78                boards: Some(3),
79                chips: Some(160),
80                fans: Some(2),
81            },
82            AvalonMinerModel::AvalonNano3 => Self {
83                boards: Some(1),
84                chips: Some(10),
85                fans: Some(1),
86            },
87            AvalonMinerModel::AvalonNano3s => Self {
88                boards: Some(1),
89                chips: Some(12),
90                fans: Some(1),
91            },
92            AvalonMinerModel::AvalonHomeQ => Self {
93                boards: Some(1),
94                chips: Some(160),
95                fans: Some(4),
96            },
97        }
98    }
99}
100
101impl From<&WhatsMinerModel> for MinerHardware {
102    fn from(value: &WhatsMinerModel) -> Self {
103        match value {
104            WhatsMinerModel::M20PV10 => Self {
105                chips: Some(156),
106                fans: Some(2),
107                boards: Some(3),
108            },
109            WhatsMinerModel::M20PV30 => Self {
110                chips: Some(148),
111                fans: Some(2),
112                boards: Some(3),
113            },
114            WhatsMinerModel::M20SPlusV30 => Self {
115                chips: None,
116                fans: Some(2),
117                boards: Some(3),
118            },
119            WhatsMinerModel::M20SV10 => Self {
120                chips: Some(105),
121                fans: Some(2),
122                boards: Some(3),
123            },
124            WhatsMinerModel::M20SV20 => Self {
125                chips: Some(111),
126                fans: Some(2),
127                boards: Some(3),
128            },
129            WhatsMinerModel::M20SV30 => Self {
130                chips: Some(140),
131                fans: Some(2),
132                boards: Some(3),
133            },
134            WhatsMinerModel::M20V10 => Self {
135                chips: Some(70),
136                fans: Some(2),
137                boards: Some(3),
138            },
139            WhatsMinerModel::M21SPlusV20 => Self {
140                chips: None,
141                fans: Some(2),
142                boards: Some(3),
143            },
144            WhatsMinerModel::M21SV20 => Self {
145                chips: Some(66),
146                fans: Some(2),
147                boards: Some(3),
148            },
149            WhatsMinerModel::M21SV60 => Self {
150                chips: Some(105),
151                fans: Some(2),
152                boards: Some(3),
153            },
154            WhatsMinerModel::M21SV70 => Self {
155                chips: Some(111),
156                fans: Some(2),
157                boards: Some(3),
158            },
159            WhatsMinerModel::M21V10 => Self {
160                chips: Some(33),
161                fans: Some(2),
162                boards: Some(3),
163            },
164            WhatsMinerModel::M29V10 => Self {
165                chips: Some(50),
166                fans: Some(2),
167                boards: Some(3),
168            },
169            WhatsMinerModel::M30KV10 => Self {
170                chips: Some(240),
171                fans: Some(2),
172                boards: Some(4),
173            },
174            WhatsMinerModel::M30LV10 => Self {
175                chips: Some(144),
176                fans: Some(2),
177                boards: Some(4),
178            },
179            WhatsMinerModel::M30SPlusPlusV10 => Self {
180                chips: Some(255),
181                fans: Some(2),
182                boards: Some(4),
183            },
184            WhatsMinerModel::M30SPlusPlusV20 => Self {
185                chips: Some(255),
186                fans: Some(2),
187                boards: Some(4),
188            },
189            WhatsMinerModel::M30SPlusPlusVE30 => Self {
190                chips: Some(215),
191                fans: Some(2),
192                boards: Some(3),
193            },
194            WhatsMinerModel::M30SPlusPlusVE40 => Self {
195                chips: Some(225),
196                fans: Some(2),
197                boards: Some(3),
198            },
199            WhatsMinerModel::M30SPlusPlusVE50 => Self {
200                chips: Some(235),
201                fans: Some(2),
202                boards: Some(3),
203            },
204            WhatsMinerModel::M30SPlusPlusVF40 => Self {
205                chips: Some(156),
206                fans: Some(2),
207                boards: Some(3),
208            },
209            WhatsMinerModel::M30SPlusPlusVG30 => Self {
210                chips: Some(111),
211                fans: Some(2),
212                boards: Some(3),
213            },
214            WhatsMinerModel::M30SPlusPlusVG40 => Self {
215                chips: Some(117),
216                fans: Some(2),
217                boards: Some(3),
218            },
219            WhatsMinerModel::M30SPlusPlusVG50 => Self {
220                chips: Some(123),
221                fans: Some(2),
222                boards: Some(3),
223            },
224            WhatsMinerModel::M30SPlusPlusVH10 => Self {
225                chips: Some(82),
226                fans: Some(2),
227                boards: Some(3),
228            },
229            WhatsMinerModel::M30SPlusPlusVH100 => Self {
230                chips: Some(82),
231                fans: Some(2),
232                boards: Some(3),
233            },
234            WhatsMinerModel::M30SPlusPlusVH110 => Self {
235                chips: Some(105),
236                fans: Some(2),
237                boards: Some(3),
238            },
239            WhatsMinerModel::M30SPlusPlusVH20 => Self {
240                chips: Some(86),
241                fans: Some(2),
242                boards: Some(3),
243            },
244            WhatsMinerModel::M30SPlusPlusVH30 => Self {
245                chips: Some(111),
246                fans: Some(2),
247                boards: Some(3),
248            },
249            WhatsMinerModel::M30SPlusPlusVH40 => Self {
250                chips: Some(70),
251                fans: Some(2),
252                boards: Some(3),
253            },
254            WhatsMinerModel::M30SPlusPlusVH50 => Self {
255                chips: Some(74),
256                fans: Some(2),
257                boards: Some(3),
258            },
259            WhatsMinerModel::M30SPlusPlusVH60 => Self {
260                chips: Some(78),
261                fans: Some(2),
262                boards: Some(3),
263            },
264            WhatsMinerModel::M30SPlusPlusVH70 => Self {
265                chips: Some(70),
266                fans: Some(2),
267                boards: Some(3),
268            },
269            WhatsMinerModel::M30SPlusPlusVH80 => Self {
270                chips: Some(74),
271                fans: Some(2),
272                boards: Some(3),
273            },
274            WhatsMinerModel::M30SPlusPlusVH90 => Self {
275                chips: Some(78),
276                fans: Some(2),
277                boards: Some(3),
278            },
279            WhatsMinerModel::M30SPlusPlusVI30 => Self {
280                chips: Some(111),
281                fans: Some(2),
282                boards: Some(3),
283            },
284            WhatsMinerModel::M30SPlusPlusVJ20 => Self {
285                chips: Some(70),
286                fans: Some(2),
287                boards: Some(3),
288            },
289            WhatsMinerModel::M30SPlusPlusVJ30 => Self {
290                chips: Some(74),
291                fans: Some(2),
292                boards: Some(3),
293            },
294            WhatsMinerModel::M30SPlusPlusVJ50 => Self {
295                chips: Some(82),
296                fans: Some(2),
297                boards: Some(3),
298            },
299            WhatsMinerModel::M30SPlusPlusVJ60 => Self {
300                chips: Some(111),
301                fans: Some(2),
302                boards: Some(3),
303            },
304            WhatsMinerModel::M30SPlusPlusVJ70 => Self {
305                chips: Some(117),
306                fans: Some(2),
307                boards: Some(3),
308            },
309            WhatsMinerModel::M30SPlusPlusVK30 => Self {
310                chips: Some(74),
311                fans: Some(2),
312                boards: Some(2),
313            },
314            WhatsMinerModel::M30SPlusPlusVK40 => Self {
315                chips: Some(105),
316                fans: Some(2),
317                boards: Some(3),
318            },
319            WhatsMinerModel::M30SPlusV10 => Self {
320                chips: Some(215),
321                fans: Some(2),
322                boards: Some(3),
323            },
324            WhatsMinerModel::M30SPlusV100 => Self {
325                chips: Some(215),
326                fans: Some(2),
327                boards: Some(3),
328            },
329            WhatsMinerModel::M30SPlusV20 => Self {
330                chips: Some(255),
331                fans: Some(2),
332                boards: Some(3),
333            },
334            WhatsMinerModel::M30SPlusV30 => Self {
335                chips: None,
336                fans: Some(2),
337                boards: Some(3),
338            },
339            WhatsMinerModel::M30SPlusV40 => Self {
340                chips: Some(235),
341                fans: Some(2),
342                boards: Some(3),
343            },
344            WhatsMinerModel::M30SPlusV50 => Self {
345                chips: Some(225),
346                fans: Some(2),
347                boards: Some(3),
348            },
349            WhatsMinerModel::M30SPlusV60 => Self {
350                chips: Some(245),
351                fans: Some(2),
352                boards: Some(3),
353            },
354            WhatsMinerModel::M30SPlusV70 => Self {
355                chips: Some(235),
356                fans: Some(2),
357                boards: Some(3),
358            },
359            WhatsMinerModel::M30SPlusV80 => Self {
360                chips: Some(245),
361                fans: Some(2),
362                boards: Some(3),
363            },
364            WhatsMinerModel::M30SPlusV90 => Self {
365                chips: Some(225),
366                fans: Some(2),
367                boards: Some(3),
368            },
369            WhatsMinerModel::M30SPlusVE100 => Self {
370                chips: None,
371                fans: Some(2),
372                boards: Some(3),
373            },
374            WhatsMinerModel::M30SPlusVE30 => Self {
375                chips: Some(148),
376                fans: Some(2),
377                boards: Some(3),
378            },
379            WhatsMinerModel::M30SPlusVE40 => Self {
380                chips: Some(156),
381                fans: Some(2),
382                boards: Some(3),
383            },
384            WhatsMinerModel::M30SPlusVE50 => Self {
385                chips: Some(164),
386                fans: Some(2),
387                boards: Some(3),
388            },
389            WhatsMinerModel::M30SPlusVE60 => Self {
390                chips: Some(172),
391                fans: Some(2),
392                boards: Some(3),
393            },
394            WhatsMinerModel::M30SPlusVE70 => Self {
395                chips: None,
396                fans: Some(2),
397                boards: Some(3),
398            },
399            WhatsMinerModel::M30SPlusVE80 => Self {
400                chips: None,
401                fans: Some(2),
402                boards: Some(3),
403            },
404            WhatsMinerModel::M30SPlusVE90 => Self {
405                chips: None,
406                fans: Some(2),
407                boards: Some(3),
408            },
409            WhatsMinerModel::M30SPlusVF20 => Self {
410                chips: Some(111),
411                fans: Some(2),
412                boards: Some(3),
413            },
414            WhatsMinerModel::M30SPlusVF30 => Self {
415                chips: Some(117),
416                fans: Some(2),
417                boards: Some(3),
418            },
419            WhatsMinerModel::M30SPlusVG20 => Self {
420                chips: Some(82),
421                fans: Some(2),
422                boards: Some(3),
423            },
424            WhatsMinerModel::M30SPlusVG30 => Self {
425                chips: Some(78),
426                fans: Some(2),
427                boards: Some(3),
428            },
429            WhatsMinerModel::M30SPlusVG40 => Self {
430                chips: Some(105),
431                fans: Some(2),
432                boards: Some(3),
433            },
434            WhatsMinerModel::M30SPlusVG50 => Self {
435                chips: Some(111),
436                fans: Some(2),
437                boards: Some(3),
438            },
439            WhatsMinerModel::M30SPlusVG60 => Self {
440                chips: Some(86),
441                fans: Some(2),
442                boards: Some(3),
443            },
444            WhatsMinerModel::M30SPlusVH10 => Self {
445                chips: Some(64),
446                fans: Some(2),
447                boards: Some(3),
448            },
449            WhatsMinerModel::M30SPlusVH20 => Self {
450                chips: Some(66),
451                fans: Some(2),
452                boards: Some(3),
453            },
454            WhatsMinerModel::M30SPlusVH30 => Self {
455                chips: Some(70),
456                fans: Some(2),
457                boards: Some(3),
458            },
459            WhatsMinerModel::M30SPlusVH40 => Self {
460                chips: Some(74),
461                fans: Some(2),
462                boards: Some(3),
463            },
464            WhatsMinerModel::M30SPlusVH50 => Self {
465                chips: Some(64),
466                fans: Some(2),
467                boards: Some(3),
468            },
469            WhatsMinerModel::M30SPlusVH60 => Self {
470                chips: Some(66),
471                fans: Some(2),
472                boards: Some(3),
473            },
474            WhatsMinerModel::M30SPlusVH70 => Self {
475                chips: Some(70),
476                fans: Some(2),
477                boards: Some(3),
478            },
479            WhatsMinerModel::M30SPlusVI30 => Self {
480                chips: Some(86),
481                fans: Some(2),
482                boards: Some(3),
483            },
484            WhatsMinerModel::M30SPlusVJ30 => Self {
485                chips: Some(105),
486                fans: Some(2),
487                boards: Some(3),
488            },
489            WhatsMinerModel::M30SPlusVJ40 => Self {
490                chips: Some(117),
491                fans: Some(2),
492                boards: Some(3),
493            },
494            WhatsMinerModel::M30SV10 => Self {
495                chips: Some(148),
496                fans: Some(2),
497                boards: Some(3),
498            },
499            WhatsMinerModel::M30SV20 => Self {
500                chips: Some(156),
501                fans: Some(2),
502                boards: Some(3),
503            },
504            WhatsMinerModel::M30SV30 => Self {
505                chips: Some(164),
506                fans: Some(2),
507                boards: Some(3),
508            },
509            WhatsMinerModel::M30SV40 => Self {
510                chips: Some(172),
511                fans: Some(2),
512                boards: Some(3),
513            },
514            WhatsMinerModel::M30SV50 => Self {
515                chips: Some(156),
516                fans: Some(2),
517                boards: Some(3),
518            },
519            WhatsMinerModel::M30SV60 => Self {
520                chips: Some(164),
521                fans: Some(2),
522                boards: Some(3),
523            },
524            WhatsMinerModel::M30SV70 => Self {
525                chips: None,
526                fans: Some(2),
527                boards: Some(3),
528            },
529            WhatsMinerModel::M30SV80 => Self {
530                chips: Some(129),
531                fans: Some(2),
532                boards: Some(3),
533            },
534            WhatsMinerModel::M30SVE10 => Self {
535                chips: Some(105),
536                fans: Some(2),
537                boards: Some(3),
538            },
539            WhatsMinerModel::M30SVE20 => Self {
540                chips: Some(111),
541                fans: Some(2),
542                boards: Some(3),
543            },
544            WhatsMinerModel::M30SVE30 => Self {
545                chips: Some(117),
546                fans: Some(2),
547                boards: Some(3),
548            },
549            WhatsMinerModel::M30SVE40 => Self {
550                chips: Some(123),
551                fans: Some(2),
552                boards: Some(3),
553            },
554            WhatsMinerModel::M30SVE50 => Self {
555                chips: Some(129),
556                fans: Some(2),
557                boards: Some(3),
558            },
559            WhatsMinerModel::M30SVE60 => Self {
560                chips: None,
561                fans: Some(2),
562                boards: Some(3),
563            },
564            WhatsMinerModel::M30SVE70 => Self {
565                chips: None,
566                fans: Some(2),
567                boards: Some(3),
568            },
569            WhatsMinerModel::M30SVF10 => Self {
570                chips: Some(70),
571                fans: Some(2),
572                boards: Some(3),
573            },
574            WhatsMinerModel::M30SVF20 => Self {
575                chips: Some(74),
576                fans: Some(2),
577                boards: Some(3),
578            },
579            WhatsMinerModel::M30SVF30 => Self {
580                chips: Some(78),
581                fans: Some(2),
582                boards: Some(3),
583            },
584            WhatsMinerModel::M30SVG10 => Self {
585                chips: Some(66),
586                fans: Some(2),
587                boards: Some(3),
588            },
589            WhatsMinerModel::M30SVG20 => Self {
590                chips: Some(70),
591                fans: Some(2),
592                boards: Some(3),
593            },
594            WhatsMinerModel::M30SVG30 => Self {
595                chips: Some(74),
596                fans: Some(2),
597                boards: Some(3),
598            },
599            WhatsMinerModel::M30SVG40 => Self {
600                chips: Some(78),
601                fans: Some(2),
602                boards: Some(3),
603            },
604            WhatsMinerModel::M30SVH10 => Self {
605                chips: Some(64),
606                fans: Some(2),
607                boards: Some(3),
608            },
609            WhatsMinerModel::M30SVH20 => Self {
610                chips: Some(66),
611                fans: Some(2),
612                boards: Some(3),
613            },
614            WhatsMinerModel::M30SVH30 => Self {
615                chips: None,
616                fans: Some(2),
617                boards: Some(3),
618            },
619            WhatsMinerModel::M30SVH40 => Self {
620                chips: Some(64),
621                fans: Some(2),
622                boards: Some(3),
623            },
624            WhatsMinerModel::M30SVH50 => Self {
625                chips: Some(66),
626                fans: Some(2),
627                boards: Some(3),
628            },
629            WhatsMinerModel::M30SVH60 => Self {
630                chips: Some(70),
631                fans: Some(2),
632                boards: Some(3),
633            },
634            WhatsMinerModel::M30SVI20 => Self {
635                chips: Some(70),
636                fans: Some(2),
637                boards: Some(3),
638            },
639            WhatsMinerModel::M30SVJ30 => Self {
640                chips: Some(105),
641                fans: Some(2),
642                boards: Some(3),
643            },
644            WhatsMinerModel::M30V10 => Self {
645                chips: Some(105),
646                fans: Some(2),
647                boards: Some(3),
648            },
649            WhatsMinerModel::M30V20 => Self {
650                chips: Some(111),
651                fans: Some(2),
652                boards: Some(3),
653            },
654            WhatsMinerModel::M31HV10 => Self {
655                chips: Some(114),
656                fans: Some(2),
657                boards: Some(3),
658            },
659            WhatsMinerModel::M31HV40 => Self {
660                chips: Some(136),
661                fans: Some(2),
662                boards: Some(4),
663            },
664            WhatsMinerModel::M31LV10 => Self {
665                chips: Some(144),
666                fans: Some(2),
667                boards: Some(4),
668            },
669            WhatsMinerModel::M31SPlusV10 => Self {
670                chips: Some(105),
671                fans: Some(2),
672                boards: Some(3),
673            },
674            WhatsMinerModel::M31SPlusV100 => Self {
675                chips: Some(111),
676                fans: Some(2),
677                boards: Some(3),
678            },
679            WhatsMinerModel::M31SPlusV20 => Self {
680                chips: Some(111),
681                fans: Some(2),
682                boards: Some(3),
683            },
684            WhatsMinerModel::M31SPlusV30 => Self {
685                chips: Some(117),
686                fans: Some(2),
687                boards: Some(3),
688            },
689            WhatsMinerModel::M31SPlusV40 => Self {
690                chips: Some(123),
691                fans: Some(2),
692                boards: Some(3),
693            },
694            WhatsMinerModel::M31SPlusV50 => Self {
695                chips: Some(148),
696                fans: Some(2),
697                boards: Some(3),
698            },
699            WhatsMinerModel::M31SPlusV60 => Self {
700                chips: Some(156),
701                fans: Some(2),
702                boards: Some(3),
703            },
704            WhatsMinerModel::M31SPlusV80 => Self {
705                chips: Some(129),
706                fans: Some(2),
707                boards: Some(3),
708            },
709            WhatsMinerModel::M31SPlusV90 => Self {
710                chips: Some(117),
711                fans: Some(2),
712                boards: Some(3),
713            },
714            WhatsMinerModel::M31SPlusVE10 => Self {
715                chips: Some(82),
716                fans: Some(2),
717                boards: Some(3),
718            },
719            WhatsMinerModel::M31SPlusVE20 => Self {
720                chips: Some(78),
721                fans: Some(2),
722                boards: Some(3),
723            },
724            WhatsMinerModel::M31SPlusVE30 => Self {
725                chips: Some(105),
726                fans: Some(2),
727                boards: Some(3),
728            },
729            WhatsMinerModel::M31SPlusVE40 => Self {
730                chips: Some(111),
731                fans: Some(2),
732                boards: Some(3),
733            },
734            WhatsMinerModel::M31SPlusVE50 => Self {
735                chips: Some(117),
736                fans: Some(2),
737                boards: Some(3),
738            },
739            WhatsMinerModel::M31SPlusVE60 => Self {
740                chips: None,
741                fans: Some(2),
742                boards: Some(3),
743            },
744            WhatsMinerModel::M31SPlusVE80 => Self {
745                chips: None,
746                fans: Some(2),
747                boards: Some(3),
748            },
749            WhatsMinerModel::M31SPlusVF20 => Self {
750                chips: Some(66),
751                fans: Some(2),
752                boards: Some(3),
753            },
754            WhatsMinerModel::M31SPlusVF30 => Self {
755                chips: None,
756                fans: Some(2),
757                boards: Some(3),
758            },
759            WhatsMinerModel::M31SPlusVG20 => Self {
760                chips: Some(66),
761                fans: Some(2),
762                boards: Some(3),
763            },
764            WhatsMinerModel::M31SPlusVG30 => Self {
765                chips: Some(70),
766                fans: Some(2),
767                boards: Some(3),
768            },
769            WhatsMinerModel::M31SEV10 => Self {
770                chips: Some(82),
771                fans: Some(2),
772                boards: Some(3),
773            },
774            WhatsMinerModel::M31SEV20 => Self {
775                chips: Some(78),
776                fans: Some(2),
777                boards: Some(3),
778            },
779            WhatsMinerModel::M31SEV30 => Self {
780                chips: Some(78),
781                fans: Some(2),
782                boards: Some(3),
783            },
784            WhatsMinerModel::M31SV10 => Self {
785                chips: Some(105),
786                fans: Some(2),
787                boards: Some(3),
788            },
789            WhatsMinerModel::M31SV20 => Self {
790                chips: Some(111),
791                fans: Some(2),
792                boards: Some(3),
793            },
794            WhatsMinerModel::M31SV30 => Self {
795                chips: Some(117),
796                fans: Some(2),
797                boards: Some(3),
798            },
799            WhatsMinerModel::M31SV40 => Self {
800                chips: Some(123),
801                fans: Some(2),
802                boards: Some(3),
803            },
804            WhatsMinerModel::M31SV50 => Self {
805                chips: Some(78),
806                fans: Some(2),
807                boards: Some(3),
808            },
809            WhatsMinerModel::M31SV60 => Self {
810                chips: Some(105),
811                fans: Some(2),
812                boards: Some(3),
813            },
814            WhatsMinerModel::M31SV70 => Self {
815                chips: Some(111),
816                fans: Some(2),
817                boards: Some(3),
818            },
819            WhatsMinerModel::M31SV80 => Self {
820                chips: None,
821                fans: Some(2),
822                boards: Some(3),
823            },
824            WhatsMinerModel::M31SV90 => Self {
825                chips: Some(117),
826                fans: Some(2),
827                boards: Some(3),
828            },
829            WhatsMinerModel::M31SVE10 => Self {
830                chips: Some(70),
831                fans: Some(2),
832                boards: Some(3),
833            },
834            WhatsMinerModel::M31SVE20 => Self {
835                chips: Some(74),
836                fans: Some(2),
837                boards: Some(3),
838            },
839            WhatsMinerModel::M31SVE30 => Self {
840                chips: None,
841                fans: Some(2),
842                boards: Some(3),
843            },
844            WhatsMinerModel::M31V10 => Self {
845                chips: Some(70),
846                fans: Some(2),
847                boards: Some(3),
848            },
849            WhatsMinerModel::M31V20 => Self {
850                chips: Some(74),
851                fans: Some(2),
852                boards: Some(3),
853            },
854            WhatsMinerModel::M32V10 => Self {
855                chips: Some(78),
856                fans: Some(2),
857                boards: Some(3),
858            },
859            WhatsMinerModel::M32V20 => Self {
860                chips: Some(74),
861                fans: Some(2),
862                boards: Some(3),
863            },
864            WhatsMinerModel::M33SPlusPlusVG40 => Self {
865                chips: Some(174),
866                fans: Some(0),
867                boards: Some(4),
868            },
869            WhatsMinerModel::M33SPlusPlusVH20 => Self {
870                chips: Some(112),
871                fans: Some(0),
872                boards: Some(4),
873            },
874            WhatsMinerModel::M33SPlusPlusVH30 => Self {
875                chips: None,
876                fans: Some(0),
877                boards: Some(4),
878            },
879            WhatsMinerModel::M33SPlusVG20 => Self {
880                chips: Some(112),
881                fans: Some(0),
882                boards: Some(4),
883            },
884            WhatsMinerModel::M33SPlusVG30 => Self {
885                chips: Some(162),
886                fans: Some(0),
887                boards: Some(4),
888            },
889            WhatsMinerModel::M33SPlusVH20 => Self {
890                chips: Some(100),
891                fans: Some(0),
892                boards: Some(4),
893            },
894            WhatsMinerModel::M33SPlusVH30 => Self {
895                chips: None,
896                fans: Some(0),
897                boards: Some(4),
898            },
899            WhatsMinerModel::M33SVG30 => Self {
900                chips: Some(116),
901                fans: Some(0),
902                boards: Some(4),
903            },
904            WhatsMinerModel::M33V10 => Self {
905                chips: Some(33),
906                fans: Some(0),
907                boards: Some(3),
908            },
909            WhatsMinerModel::M33V20 => Self {
910                chips: Some(62),
911                fans: Some(0),
912                boards: Some(3),
913            },
914            WhatsMinerModel::M33V30 => Self {
915                chips: Some(66),
916                fans: Some(0),
917                boards: Some(3),
918            },
919            WhatsMinerModel::M34SPlusVE10 => Self {
920                chips: Some(116),
921                fans: Some(0),
922                boards: Some(4),
923            },
924            WhatsMinerModel::M36SPlusPlusVH30 => Self {
925                chips: Some(80),
926                fans: Some(0),
927                boards: Some(4),
928            },
929            WhatsMinerModel::M36SPlusVG30 => Self {
930                chips: Some(108),
931                fans: Some(0),
932                boards: Some(4),
933            },
934            WhatsMinerModel::M36SVE10 => Self {
935                chips: Some(114),
936                fans: Some(0),
937                boards: Some(4),
938            },
939            WhatsMinerModel::M39V10 => Self {
940                chips: Some(50),
941                fans: Some(0),
942                boards: Some(3),
943            },
944            WhatsMinerModel::M39V20 => Self {
945                chips: Some(54),
946                fans: Some(0),
947                boards: Some(3),
948            },
949            WhatsMinerModel::M39V30 => Self {
950                chips: Some(68),
951                fans: Some(0),
952                boards: Some(3),
953            },
954            WhatsMinerModel::M50SPlusPlusVK10 => Self {
955                chips: Some(117),
956                fans: Some(2),
957                boards: Some(3),
958            },
959            WhatsMinerModel::M50SPlusPlusVK20 => Self {
960                chips: Some(123),
961                fans: Some(2),
962                boards: Some(3),
963            },
964            WhatsMinerModel::M50SPlusPlusVK30 => Self {
965                chips: Some(156),
966                fans: Some(2),
967                boards: Some(3),
968            },
969            WhatsMinerModel::M50SPlusPlusVK40 => Self {
970                chips: Some(129),
971                fans: Some(2),
972                boards: Some(3),
973            },
974            WhatsMinerModel::M50SPlusPlusVK50 => Self {
975                chips: Some(135),
976                fans: Some(2),
977                boards: Some(3),
978            },
979            WhatsMinerModel::M50SPlusPlusVK60 => Self {
980                chips: Some(111),
981                fans: Some(2),
982                boards: Some(3),
983            },
984            WhatsMinerModel::M50SPlusPlusVL20 => Self {
985                chips: Some(86),
986                fans: Some(2),
987                boards: Some(3),
988            },
989            WhatsMinerModel::M50SPlusPlusVL30 => Self {
990                chips: Some(111),
991                fans: Some(2),
992                boards: Some(3),
993            },
994            WhatsMinerModel::M50SPlusPlusVL40 => Self {
995                chips: Some(117),
996                fans: Some(2),
997                boards: Some(3),
998            },
999            WhatsMinerModel::M50SPlusPlusVL50 => Self {
1000                chips: Some(105),
1001                fans: Some(2),
1002                boards: Some(3),
1003            },
1004            WhatsMinerModel::M50SPlusPlusVL60 => Self {
1005                chips: Some(111),
1006                fans: Some(2),
1007                boards: Some(3),
1008            },
1009            WhatsMinerModel::M50SPlusVH30 => Self {
1010                chips: Some(172),
1011                fans: Some(2),
1012                boards: Some(3),
1013            },
1014            WhatsMinerModel::M50SPlusVH40 => Self {
1015                chips: Some(180),
1016                fans: Some(2),
1017                boards: Some(3),
1018            },
1019            WhatsMinerModel::M50SPlusVJ30 => Self {
1020                chips: Some(156),
1021                fans: Some(2),
1022                boards: Some(3),
1023            },
1024            WhatsMinerModel::M50SPlusVJ40 => Self {
1025                chips: Some(164),
1026                fans: Some(2),
1027                boards: Some(3),
1028            },
1029            WhatsMinerModel::M50SPlusVJ60 => Self {
1030                chips: Some(164),
1031                fans: Some(2),
1032                boards: Some(3),
1033            },
1034            WhatsMinerModel::M50SPlusVK10 => Self {
1035                chips: Some(111),
1036                fans: Some(2),
1037                boards: Some(3),
1038            },
1039            WhatsMinerModel::M50SPlusVK20 => Self {
1040                chips: Some(117),
1041                fans: Some(2),
1042                boards: Some(3),
1043            },
1044            WhatsMinerModel::M50SPlusVK30 => Self {
1045                chips: Some(123),
1046                fans: Some(2),
1047                boards: Some(3),
1048            },
1049            WhatsMinerModel::M50SPlusVL10 => Self {
1050                chips: Some(82),
1051                fans: Some(2),
1052                boards: Some(3),
1053            },
1054            WhatsMinerModel::M50SPlusVL20 => Self {
1055                chips: Some(86),
1056                fans: Some(2),
1057                boards: Some(3),
1058            },
1059            WhatsMinerModel::M50SPlusVL30 => Self {
1060                chips: Some(105),
1061                fans: Some(2),
1062                boards: Some(3),
1063            },
1064            WhatsMinerModel::M50SVH10 => Self {
1065                chips: None,
1066                fans: Some(2),
1067                boards: Some(3),
1068            },
1069            WhatsMinerModel::M50SVH20 => Self {
1070                chips: Some(135),
1071                fans: Some(2),
1072                boards: Some(3),
1073            },
1074            WhatsMinerModel::M50SVH30 => Self {
1075                chips: Some(156),
1076                fans: Some(2),
1077                boards: Some(3),
1078            },
1079            WhatsMinerModel::M50SVH40 => Self {
1080                chips: Some(148),
1081                fans: Some(2),
1082                boards: Some(3),
1083            },
1084            WhatsMinerModel::M50SVH50 => Self {
1085                chips: Some(135),
1086                fans: Some(2),
1087                boards: Some(3),
1088            },
1089            WhatsMinerModel::M50SVJ10 => Self {
1090                chips: Some(111),
1091                fans: Some(2),
1092                boards: Some(3),
1093            },
1094            WhatsMinerModel::M50SVJ20 => Self {
1095                chips: Some(117),
1096                fans: Some(2),
1097                boards: Some(3),
1098            },
1099            WhatsMinerModel::M50SVJ30 => Self {
1100                chips: Some(123),
1101                fans: Some(2),
1102                boards: Some(3),
1103            },
1104            WhatsMinerModel::M50SVJ40 => Self {
1105                chips: Some(129),
1106                fans: Some(2),
1107                boards: Some(3),
1108            },
1109            WhatsMinerModel::M50SVJ50 => Self {
1110                chips: Some(135),
1111                fans: Some(2),
1112                boards: Some(3),
1113            },
1114            WhatsMinerModel::M50SVK10 => Self {
1115                chips: Some(78),
1116                fans: Some(2),
1117                boards: Some(3),
1118            },
1119            WhatsMinerModel::M50SVK20 => Self {
1120                chips: Some(111),
1121                fans: Some(2),
1122                boards: Some(3),
1123            },
1124            WhatsMinerModel::M50SVK30 => Self {
1125                chips: Some(117),
1126                fans: Some(2),
1127                boards: Some(3),
1128            },
1129            WhatsMinerModel::M50SVK50 => Self {
1130                chips: Some(105),
1131                fans: Some(2),
1132                boards: Some(3),
1133            },
1134            WhatsMinerModel::M50SVK60 => Self {
1135                chips: Some(111),
1136                fans: Some(2),
1137                boards: Some(3),
1138            },
1139            WhatsMinerModel::M50SVK70 => Self {
1140                chips: Some(123),
1141                fans: Some(2),
1142                boards: Some(3),
1143            },
1144            WhatsMinerModel::M50SVK80 => Self {
1145                chips: Some(86),
1146                fans: Some(2),
1147                boards: Some(3),
1148            },
1149            WhatsMinerModel::M50SVL20 => Self {
1150                chips: Some(78),
1151                fans: Some(2),
1152                boards: Some(3),
1153            },
1154            WhatsMinerModel::M50SVL30 => Self {
1155                chips: Some(82),
1156                fans: Some(2),
1157                boards: Some(3),
1158            },
1159            WhatsMinerModel::M50VE30 => Self {
1160                chips: Some(255),
1161                fans: Some(2),
1162                boards: Some(4),
1163            },
1164            WhatsMinerModel::M50VG30 => Self {
1165                chips: Some(156),
1166                fans: Some(2),
1167                boards: Some(3),
1168            },
1169            WhatsMinerModel::M50VH10 => Self {
1170                chips: Some(86),
1171                fans: Some(2),
1172                boards: Some(3),
1173            },
1174            WhatsMinerModel::M50VH20 => Self {
1175                chips: Some(111),
1176                fans: Some(2),
1177                boards: Some(3),
1178            },
1179            WhatsMinerModel::M50VH30 => Self {
1180                chips: Some(117),
1181                fans: Some(2),
1182                boards: Some(3),
1183            },
1184            WhatsMinerModel::M50VH40 => Self {
1185                chips: Some(84),
1186                fans: Some(2),
1187                boards: Some(3),
1188            },
1189            WhatsMinerModel::M50VH50 => Self {
1190                chips: Some(105),
1191                fans: Some(2),
1192                boards: Some(3),
1193            },
1194            WhatsMinerModel::M50VH60 => Self {
1195                chips: Some(84),
1196                fans: Some(2),
1197                boards: Some(3),
1198            },
1199            WhatsMinerModel::M50VH70 => Self {
1200                chips: Some(105),
1201                fans: Some(2),
1202                boards: Some(3),
1203            },
1204            WhatsMinerModel::M50VH80 => Self {
1205                chips: Some(111),
1206                fans: Some(2),
1207                boards: Some(3),
1208            },
1209            WhatsMinerModel::M50VH90 => Self {
1210                chips: Some(117),
1211                fans: Some(2),
1212                boards: Some(3),
1213            },
1214            WhatsMinerModel::M50VJ10 => Self {
1215                chips: Some(86),
1216                fans: Some(2),
1217                boards: Some(3),
1218            },
1219            WhatsMinerModel::M50VJ20 => Self {
1220                chips: Some(111),
1221                fans: Some(2),
1222                boards: Some(3),
1223            },
1224            WhatsMinerModel::M50VJ30 => Self {
1225                chips: Some(117),
1226                fans: Some(2),
1227                boards: Some(3),
1228            },
1229            WhatsMinerModel::M50VJ40 => Self {
1230                chips: Some(123),
1231                fans: Some(2),
1232                boards: Some(3),
1233            },
1234            WhatsMinerModel::M50VJ60 => Self {
1235                chips: Some(164),
1236                fans: Some(2),
1237                boards: Some(3),
1238            },
1239            WhatsMinerModel::M50VK40 => Self {
1240                chips: Some(111),
1241                fans: Some(2),
1242                boards: Some(3),
1243            },
1244            WhatsMinerModel::M50VK50 => Self {
1245                chips: Some(117),
1246                fans: Some(2),
1247                boards: Some(3),
1248            },
1249            WhatsMinerModel::M52SPlusPlusVL10 => Self {
1250                chips: Some(87),
1251                fans: Some(0),
1252                boards: Some(4),
1253            },
1254            WhatsMinerModel::M52SVK30 => Self {
1255                chips: Some(62),
1256                fans: Some(0),
1257                boards: Some(4),
1258            },
1259            WhatsMinerModel::M53HVH10 => Self {
1260                chips: Some(56),
1261                fans: Some(0),
1262                boards: Some(4),
1263            },
1264            WhatsMinerModel::M53SPlusPlusVK10 => Self {
1265                chips: Some(198),
1266                fans: Some(0),
1267                boards: Some(4),
1268            },
1269            WhatsMinerModel::M53SPlusPlusVK20 => Self {
1270                chips: Some(192),
1271                fans: Some(0),
1272                boards: Some(4),
1273            },
1274            WhatsMinerModel::M53SPlusPlusVK30 => Self {
1275                chips: Some(240),
1276                fans: Some(0),
1277                boards: Some(4),
1278            },
1279            WhatsMinerModel::M53SPlusPlusVK50 => Self {
1280                chips: Some(186),
1281                fans: Some(0),
1282                boards: Some(4),
1283            },
1284            WhatsMinerModel::M53SPlusPlusVL10 => Self {
1285                chips: Some(128),
1286                fans: Some(0),
1287                boards: Some(4),
1288            },
1289            WhatsMinerModel::M53SPlusPlusVL30 => Self {
1290                chips: Some(174),
1291                fans: Some(0),
1292                boards: Some(4),
1293            },
1294            WhatsMinerModel::M53SPlusVJ30 => Self {
1295                chips: Some(240),
1296                fans: Some(0),
1297                boards: Some(4),
1298            },
1299            WhatsMinerModel::M53SPlusVJ40 => Self {
1300                chips: Some(248),
1301                fans: Some(0),
1302                boards: Some(4),
1303            },
1304            WhatsMinerModel::M53SPlusVJ50 => Self {
1305                chips: Some(264),
1306                fans: Some(0),
1307                boards: Some(4),
1308            },
1309            WhatsMinerModel::M53SPlusVK30 => Self {
1310                chips: Some(168),
1311                fans: Some(0),
1312                boards: Some(4),
1313            },
1314            WhatsMinerModel::M53SVH20 => Self {
1315                chips: Some(198),
1316                fans: Some(0),
1317                boards: Some(4),
1318            },
1319            WhatsMinerModel::M53SVH30 => Self {
1320                chips: Some(204),
1321                fans: Some(0),
1322                boards: Some(4),
1323            },
1324            WhatsMinerModel::M53SVJ30 => Self {
1325                chips: Some(180),
1326                fans: Some(0),
1327                boards: Some(4),
1328            },
1329            WhatsMinerModel::M53SVJ40 => Self {
1330                chips: Some(192),
1331                fans: Some(0),
1332                boards: Some(4),
1333            },
1334            WhatsMinerModel::M53SVK30 => Self {
1335                chips: Some(128),
1336                fans: Some(0),
1337                boards: Some(4),
1338            },
1339            WhatsMinerModel::M53VH30 => Self {
1340                chips: Some(128),
1341                fans: Some(0),
1342                boards: Some(4),
1343            },
1344            WhatsMinerModel::M53VH40 => Self {
1345                chips: Some(174),
1346                fans: Some(0),
1347                boards: Some(4),
1348            },
1349            WhatsMinerModel::M53VH50 => Self {
1350                chips: Some(162),
1351                fans: Some(0),
1352                boards: Some(4),
1353            },
1354            WhatsMinerModel::M53VK30 => Self {
1355                chips: Some(100),
1356                fans: Some(0),
1357                boards: Some(4),
1358            },
1359            WhatsMinerModel::M53VK60 => Self {
1360                chips: Some(100),
1361                fans: Some(0),
1362                boards: Some(4),
1363            },
1364            WhatsMinerModel::M54SPlusPlusVK30 => Self {
1365                chips: Some(96),
1366                fans: Some(0),
1367                boards: Some(4),
1368            },
1369            WhatsMinerModel::M54SPlusPlusVL30 => Self {
1370                chips: Some(68),
1371                fans: Some(0),
1372                boards: Some(4),
1373            },
1374            WhatsMinerModel::M54SPlusPlusVL40 => Self {
1375                chips: Some(90),
1376                fans: Some(0),
1377                boards: Some(4),
1378            },
1379            WhatsMinerModel::M56SPlusPlusVK10 => Self {
1380                chips: Some(160),
1381                fans: Some(0),
1382                boards: Some(4),
1383            },
1384            WhatsMinerModel::M56SPlusPlusVK30 => Self {
1385                chips: Some(176),
1386                fans: Some(0),
1387                boards: Some(4),
1388            },
1389            WhatsMinerModel::M56SPlusPlusVK40 => Self {
1390                chips: Some(132),
1391                fans: Some(0),
1392                boards: Some(4),
1393            },
1394            WhatsMinerModel::M56SPlusPlusVK50 => Self {
1395                chips: Some(152),
1396                fans: Some(0),
1397                boards: Some(4),
1398            },
1399            WhatsMinerModel::M56SPlusVJ30 => Self {
1400                chips: Some(176),
1401                fans: Some(0),
1402                boards: Some(4),
1403            },
1404            WhatsMinerModel::M56SPlusVK30 => Self {
1405                chips: Some(108),
1406                fans: Some(0),
1407                boards: Some(4),
1408            },
1409            WhatsMinerModel::M56SPlusVK40 => Self {
1410                chips: Some(114),
1411                fans: Some(0),
1412                boards: Some(4),
1413            },
1414            WhatsMinerModel::M56SPlusVK50 => Self {
1415                chips: Some(120),
1416                fans: Some(0),
1417                boards: Some(4),
1418            },
1419            WhatsMinerModel::M56SVH30 => Self {
1420                chips: Some(152),
1421                fans: Some(0),
1422                boards: Some(4),
1423            },
1424            WhatsMinerModel::M56SVJ30 => Self {
1425                chips: Some(132),
1426                fans: Some(0),
1427                boards: Some(4),
1428            },
1429            WhatsMinerModel::M56SVJ40 => Self {
1430                chips: Some(152),
1431                fans: Some(0),
1432                boards: Some(4),
1433            },
1434            WhatsMinerModel::M56VH30 => Self {
1435                chips: Some(108),
1436                fans: Some(0),
1437                boards: Some(4),
1438            },
1439            WhatsMinerModel::M59VH30 => Self {
1440                chips: Some(132),
1441                fans: Some(0),
1442                boards: Some(4),
1443            },
1444            WhatsMinerModel::M60SPlusPlusVL30 => Self {
1445                chips: Some(225),
1446                fans: Some(2),
1447                boards: Some(3),
1448            },
1449            WhatsMinerModel::M60SPlusPlusVL40 => Self {
1450                chips: Some(235),
1451                fans: Some(2),
1452                boards: Some(3),
1453            },
1454            WhatsMinerModel::M60SPlusVK30 => Self {
1455                chips: Some(245),
1456                fans: Some(2),
1457                boards: Some(3),
1458            },
1459            WhatsMinerModel::M60SPlusVK40 => Self {
1460                chips: Some(215),
1461                fans: Some(2),
1462                boards: Some(4),
1463            },
1464            WhatsMinerModel::M60SPlusVK50 => Self {
1465                chips: Some(225),
1466                fans: Some(2),
1467                boards: Some(4),
1468            },
1469            WhatsMinerModel::M60SPlusVK60 => Self {
1470                chips: Some(294),
1471                fans: Some(2),
1472                boards: Some(3),
1473            },
1474            WhatsMinerModel::M60SPlusVK70 => Self {
1475                chips: Some(306),
1476                fans: Some(2),
1477                boards: Some(3),
1478            },
1479            WhatsMinerModel::M60SPlusVL10 => Self {
1480                chips: Some(196),
1481                fans: Some(2),
1482                boards: Some(3),
1483            },
1484            WhatsMinerModel::M60SPlusVL30 => Self {
1485                chips: Some(225),
1486                fans: Some(2),
1487                boards: Some(3),
1488            },
1489            WhatsMinerModel::M60SPlusVL40 => Self {
1490                chips: Some(188),
1491                fans: Some(2),
1492                boards: Some(3),
1493            },
1494            WhatsMinerModel::M60SPlusVL50 => Self {
1495                chips: Some(180),
1496                fans: Some(2),
1497                boards: Some(3),
1498            },
1499            WhatsMinerModel::M60SPlusVL60 => Self {
1500                chips: Some(172),
1501                fans: Some(2),
1502                boards: Some(3),
1503            },
1504            WhatsMinerModel::M60SVK10 => Self {
1505                chips: Some(215),
1506                fans: Some(2),
1507                boards: Some(3),
1508            },
1509            WhatsMinerModel::M60SVK20 => Self {
1510                chips: Some(235),
1511                fans: Some(2),
1512                boards: Some(3),
1513            },
1514            WhatsMinerModel::M60SVK30 => Self {
1515                chips: Some(245),
1516                fans: Some(2),
1517                boards: Some(3),
1518            },
1519            WhatsMinerModel::M60SVK40 => Self {
1520                chips: Some(225),
1521                fans: Some(2),
1522                boards: Some(3),
1523            },
1524            WhatsMinerModel::M60SVL10 => Self {
1525                chips: Some(147),
1526                fans: Some(2),
1527                boards: Some(3),
1528            },
1529            WhatsMinerModel::M60SVL20 => Self {
1530                chips: Some(164),
1531                fans: Some(2),
1532                boards: Some(3),
1533            },
1534            WhatsMinerModel::M60SVL30 => Self {
1535                chips: Some(172),
1536                fans: Some(2),
1537                boards: Some(3),
1538            },
1539            WhatsMinerModel::M60SVL40 => Self {
1540                chips: Some(180),
1541                fans: Some(2),
1542                boards: Some(3),
1543            },
1544            WhatsMinerModel::M60SVL50 => Self {
1545                chips: Some(188),
1546                fans: Some(2),
1547                boards: Some(3),
1548            },
1549            WhatsMinerModel::M60SVL60 => Self {
1550                chips: Some(196),
1551                fans: Some(2),
1552                boards: Some(3),
1553            },
1554            WhatsMinerModel::M60SVL70 => Self {
1555                chips: Some(141),
1556                fans: Some(2),
1557                boards: Some(3),
1558            },
1559            WhatsMinerModel::M60VK10 => Self {
1560                chips: Some(164),
1561                fans: Some(2),
1562                boards: Some(3),
1563            },
1564            WhatsMinerModel::M60VK20 => Self {
1565                chips: Some(172),
1566                fans: Some(2),
1567                boards: Some(3),
1568            },
1569            WhatsMinerModel::M60VK30 => Self {
1570                chips: Some(215),
1571                fans: Some(2),
1572                boards: Some(3),
1573            },
1574            WhatsMinerModel::M60VK40 => Self {
1575                chips: Some(180),
1576                fans: Some(2),
1577                boards: Some(3),
1578            },
1579            WhatsMinerModel::M60VK6A => Self {
1580                chips: Some(172),
1581                fans: Some(2),
1582                boards: Some(3),
1583            },
1584            WhatsMinerModel::M60VL10 => Self {
1585                chips: Some(111),
1586                fans: Some(2),
1587                boards: Some(3),
1588            },
1589            WhatsMinerModel::M60VL20 => Self {
1590                chips: Some(117),
1591                fans: Some(2),
1592                boards: Some(3),
1593            },
1594            WhatsMinerModel::M60VL30 => Self {
1595                chips: Some(123),
1596                fans: Some(2),
1597                boards: Some(3),
1598            },
1599            WhatsMinerModel::M60VL40 => Self {
1600                chips: Some(129),
1601                fans: Some(2),
1602                boards: Some(3),
1603            },
1604            WhatsMinerModel::M60VL50 => Self {
1605                chips: Some(135),
1606                fans: Some(2),
1607                boards: Some(3),
1608            },
1609            WhatsMinerModel::M61SPlusVL30 => Self {
1610                chips: Some(225),
1611                fans: Some(2),
1612                boards: Some(3),
1613            },
1614            WhatsMinerModel::M61SVL10 => Self {
1615                chips: Some(164),
1616                fans: Some(2),
1617                boards: Some(3),
1618            },
1619            WhatsMinerModel::M61SVL20 => Self {
1620                chips: Some(172),
1621                fans: Some(2),
1622                boards: Some(3),
1623            },
1624            WhatsMinerModel::M61SVL30 => Self {
1625                chips: Some(180),
1626                fans: Some(2),
1627                boards: Some(3),
1628            },
1629            WhatsMinerModel::M61VK10 => Self {
1630                chips: Some(180),
1631                fans: Some(2),
1632                boards: Some(3),
1633            },
1634            WhatsMinerModel::M61VK20 => Self {
1635                chips: Some(184),
1636                fans: Some(2),
1637                boards: Some(3),
1638            },
1639            WhatsMinerModel::M61VK30 => Self {
1640                chips: Some(188),
1641                fans: Some(2),
1642                boards: Some(3),
1643            },
1644            WhatsMinerModel::M61VK40 => Self {
1645                chips: Some(192),
1646                fans: Some(2),
1647                boards: Some(3),
1648            },
1649            WhatsMinerModel::M61VL10 => Self {
1650                chips: Some(135),
1651                fans: Some(2),
1652                boards: Some(3),
1653            },
1654            WhatsMinerModel::M61VL30 => Self {
1655                chips: Some(141),
1656                fans: Some(2),
1657                boards: Some(3),
1658            },
1659            WhatsMinerModel::M61VL40 => Self {
1660                chips: Some(144),
1661                fans: Some(2),
1662                boards: Some(3),
1663            },
1664            WhatsMinerModel::M61VL50 => Self {
1665                chips: Some(147),
1666                fans: Some(2),
1667                boards: Some(3),
1668            },
1669            WhatsMinerModel::M61VL60 => Self {
1670                chips: Some(150),
1671                fans: Some(2),
1672                boards: Some(3),
1673            },
1674            WhatsMinerModel::M62SPlusVK30 => Self {
1675                chips: Some(430),
1676                fans: Some(0),
1677                boards: Some(3),
1678            },
1679            WhatsMinerModel::M63SPlusPlusVL20 => Self {
1680                chips: Some(380),
1681                fans: Some(0),
1682                boards: Some(4),
1683            },
1684            WhatsMinerModel::M63SPlusVK30 => Self {
1685                chips: Some(456),
1686                fans: Some(0),
1687                boards: Some(4),
1688            },
1689            WhatsMinerModel::M63SPlusVL10 => Self {
1690                chips: Some(304),
1691                fans: Some(0),
1692                boards: Some(4),
1693            },
1694            WhatsMinerModel::M63SPlusVL20 => Self {
1695                chips: Some(340),
1696                fans: Some(0),
1697                boards: Some(4),
1698            },
1699            WhatsMinerModel::M63SPlusVL30 => Self {
1700                chips: Some(370),
1701                fans: Some(0),
1702                boards: Some(4),
1703            },
1704            WhatsMinerModel::M63SPlusVL50 => Self {
1705                chips: Some(272),
1706                fans: Some(0),
1707                boards: Some(4),
1708            },
1709            WhatsMinerModel::M63SVK10 => Self {
1710                chips: Some(340),
1711                fans: Some(0),
1712                boards: Some(4),
1713            },
1714            WhatsMinerModel::M63SVK20 => Self {
1715                chips: Some(350),
1716                fans: Some(0),
1717                boards: Some(4),
1718            },
1719            WhatsMinerModel::M63SVK30 => Self {
1720                chips: Some(370),
1721                fans: Some(0),
1722                boards: Some(4),
1723            },
1724            WhatsMinerModel::M63SVK60 => Self {
1725                chips: Some(350),
1726                fans: Some(0),
1727                boards: Some(4),
1728            },
1729            WhatsMinerModel::M63SVL10 => Self {
1730                chips: Some(228),
1731                fans: Some(0),
1732                boards: Some(4),
1733            },
1734            WhatsMinerModel::M63SVL50 => Self {
1735                chips: Some(288),
1736                fans: Some(0),
1737                boards: Some(4),
1738            },
1739            WhatsMinerModel::M63SVL60 => Self {
1740                chips: Some(288),
1741                fans: Some(0),
1742                boards: Some(4),
1743            },
1744            WhatsMinerModel::M63VK10 => Self {
1745                chips: None,
1746                fans: Some(0),
1747                boards: Some(4),
1748            },
1749            WhatsMinerModel::M63VK20 => Self {
1750                chips: Some(264),
1751                fans: Some(0),
1752                boards: Some(4),
1753            },
1754            WhatsMinerModel::M63VK30 => Self {
1755                chips: Some(272),
1756                fans: Some(0),
1757                boards: Some(4),
1758            },
1759            WhatsMinerModel::M63VL10 => Self {
1760                chips: Some(174),
1761                fans: Some(0),
1762                boards: Some(4),
1763            },
1764            WhatsMinerModel::M63VL30 => Self {
1765                chips: Some(216),
1766                fans: Some(0),
1767                boards: Some(4),
1768            },
1769            WhatsMinerModel::M64SVL30 => Self {
1770                chips: Some(152),
1771                fans: Some(0),
1772                boards: Some(4),
1773            },
1774            WhatsMinerModel::M64VL30 => Self {
1775                chips: Some(114),
1776                fans: Some(0),
1777                boards: Some(4),
1778            },
1779            WhatsMinerModel::M64VL40 => Self {
1780                chips: Some(120),
1781                fans: Some(0),
1782                boards: Some(4),
1783            },
1784            WhatsMinerModel::M65SPlusVK30 => Self {
1785                chips: Some(456),
1786                fans: Some(0),
1787                boards: Some(4),
1788            },
1789            WhatsMinerModel::M65SVK20 => Self {
1790                chips: Some(350),
1791                fans: Some(0),
1792                boards: Some(4),
1793            },
1794            WhatsMinerModel::M65SVL60 => Self {
1795                chips: Some(288),
1796                fans: Some(0),
1797                boards: Some(4),
1798            },
1799            WhatsMinerModel::M66SPlusPlusVL20 => Self {
1800                chips: Some(368),
1801                fans: Some(0),
1802                boards: Some(3),
1803            },
1804            WhatsMinerModel::M66SPlusVK30 => Self {
1805                chips: Some(440),
1806                fans: Some(0),
1807                boards: Some(3),
1808            },
1809            WhatsMinerModel::M66SPlusVL10 => Self {
1810                chips: Some(220),
1811                fans: Some(0),
1812                boards: Some(4),
1813            },
1814            WhatsMinerModel::M66SPlusVL20 => Self {
1815                chips: Some(230),
1816                fans: Some(0),
1817                boards: Some(4),
1818            },
1819            WhatsMinerModel::M66SPlusVL30 => Self {
1820                chips: Some(240),
1821                fans: Some(0),
1822                boards: Some(4),
1823            },
1824            WhatsMinerModel::M66SPlusVL40 => Self {
1825                chips: Some(250),
1826                fans: Some(0),
1827                boards: Some(4),
1828            },
1829            WhatsMinerModel::M66SPlusVL60 => Self {
1830                chips: Some(200),
1831                fans: Some(0),
1832                boards: Some(4),
1833            },
1834            WhatsMinerModel::M66SVK20 => Self {
1835                chips: Some(368),
1836                fans: Some(0),
1837                boards: Some(3),
1838            },
1839            WhatsMinerModel::M66SVK30 => Self {
1840                chips: Some(384),
1841                fans: Some(0),
1842                boards: Some(3),
1843            },
1844            WhatsMinerModel::M66SVK40 => Self {
1845                chips: Some(240),
1846                fans: Some(0),
1847                boards: Some(4),
1848            },
1849            WhatsMinerModel::M66SVK50 => Self {
1850                chips: Some(250),
1851                fans: Some(0),
1852                boards: Some(4),
1853            },
1854            WhatsMinerModel::M66SVK60 => Self {
1855                chips: Some(250),
1856                fans: Some(0),
1857                boards: Some(4),
1858            },
1859            WhatsMinerModel::M66SVL10 => Self {
1860                chips: Some(168),
1861                fans: Some(0),
1862                boards: Some(4),
1863            },
1864            WhatsMinerModel::M66SVL20 => Self {
1865                chips: Some(176),
1866                fans: Some(0),
1867                boards: Some(4),
1868            },
1869            WhatsMinerModel::M66SVL30 => Self {
1870                chips: Some(192),
1871                fans: Some(0),
1872                boards: Some(4),
1873            },
1874            WhatsMinerModel::M66SVL40 => Self {
1875                chips: Some(200),
1876                fans: Some(0),
1877                boards: Some(4),
1878            },
1879            WhatsMinerModel::M66SVL50 => Self {
1880                chips: Some(210),
1881                fans: Some(0),
1882                boards: Some(4),
1883            },
1884            WhatsMinerModel::M66VK20 => Self {
1885                chips: Some(184),
1886                fans: Some(0),
1887                boards: Some(4),
1888            },
1889            WhatsMinerModel::M66VK30 => Self {
1890                chips: Some(192),
1891                fans: Some(0),
1892                boards: Some(4),
1893            },
1894            WhatsMinerModel::M66VL20 => Self {
1895                chips: Some(160),
1896                fans: Some(0),
1897                boards: Some(4),
1898            },
1899            WhatsMinerModel::M66VL30 => Self {
1900                chips: Some(168),
1901                fans: Some(0),
1902                boards: Some(4),
1903            },
1904            WhatsMinerModel::M67SVK30 => Self {
1905                chips: Some(440),
1906                fans: Some(0),
1907                boards: Some(3),
1908            },
1909            WhatsMinerModel::M70VM30 => Self {
1910                chips: Some(147),
1911                fans: Some(2),
1912                boards: Some(3),
1913            },
1914        }
1915    }
1916}
1917
1918impl From<&BitaxeModel> for MinerHardware {
1919    fn from(_model: &BitaxeModel) -> Self {
1920        Self {
1921            chips: Some(1),
1922            fans: Some(1),
1923            boards: Some(1),
1924        }
1925    }
1926}
1927
1928impl From<&BraiinsModel> for MinerHardware {
1929    fn from(value: &BraiinsModel) -> Self {
1930        match value {
1931            BraiinsModel::BMM100 => Self {
1932                chips: None,
1933                fans: Some(1),
1934                boards: Some(1),
1935            },
1936            BraiinsModel::BMM101 => Self {
1937                chips: None,
1938                fans: Some(1),
1939                boards: Some(1),
1940            },
1941        }
1942    }
1943}
1944
1945impl From<&EPicModel> for MinerHardware {
1946    fn from(value: &EPicModel) -> Self {
1947        match value {
1948            EPicModel::BM520i => Self {
1949                chips: Some(124),
1950                fans: Some(4),
1951                boards: Some(3),
1952            },
1953            EPicModel::S19JProDual => Self {
1954                chips: Some(126),
1955                fans: Some(8),
1956                boards: Some(6),
1957            },
1958        }
1959    }
1960}
1961
1962impl From<&AntMinerModel> for MinerHardware {
1963    fn from(value: &AntMinerModel) -> Self {
1964        match value {
1965            AntMinerModel::D3 => Self {
1966                chips: Some(60),
1967                fans: Some(4),
1968                boards: Some(3),
1969            },
1970            AntMinerModel::HS3 => Self {
1971                chips: Some(92),
1972                fans: Some(4),
1973                boards: Some(3),
1974            },
1975            AntMinerModel::L3Plus => Self {
1976                chips: Some(72),
1977                fans: Some(2),
1978                boards: Some(4),
1979            },
1980            AntMinerModel::KA3 => Self {
1981                chips: Some(92),
1982                fans: Some(4),
1983                boards: Some(3),
1984            },
1985            AntMinerModel::KS3 => Self {
1986                chips: Some(92),
1987                fans: Some(2),
1988                boards: Some(3),
1989            },
1990            AntMinerModel::DR5 => Self {
1991                chips: Some(72),
1992                fans: Some(2),
1993                boards: Some(3),
1994            },
1995            AntMinerModel::KS5 => Self {
1996                chips: Some(92),
1997                fans: Some(4),
1998                boards: Some(3),
1999            },
2000            AntMinerModel::KS5Pro => Self {
2001                chips: Some(92),
2002                fans: Some(4),
2003                boards: Some(3),
2004            },
2005            AntMinerModel::L7 => Self {
2006                chips: Some(120),
2007                fans: Some(4),
2008                boards: Some(3),
2009            },
2010            AntMinerModel::K7 => Self {
2011                chips: Some(92),
2012                fans: Some(2),
2013                boards: Some(3),
2014            },
2015            AntMinerModel::D7 => Self {
2016                chips: Some(70),
2017                fans: Some(4),
2018                boards: Some(3),
2019            },
2020            AntMinerModel::E9Pro => Self {
2021                chips: Some(8),
2022                fans: Some(4),
2023                boards: Some(2),
2024            },
2025            AntMinerModel::D9 => Self {
2026                chips: Some(126),
2027                fans: Some(4),
2028                boards: Some(3),
2029            },
2030            AntMinerModel::S9 => Self {
2031                chips: Some(63),
2032                fans: Some(2),
2033                boards: Some(3),
2034            },
2035            AntMinerModel::S9i => Self {
2036                chips: Some(63),
2037                fans: Some(2),
2038                boards: Some(3),
2039            },
2040            AntMinerModel::S9j => Self {
2041                chips: Some(63),
2042                fans: Some(2),
2043                boards: Some(3),
2044            },
2045            AntMinerModel::T9 => Self {
2046                chips: Some(54),
2047                fans: Some(2),
2048                boards: Some(3),
2049            },
2050            AntMinerModel::L9 => Self {
2051                chips: Some(110),
2052                fans: Some(4),
2053                boards: Some(3),
2054            },
2055            AntMinerModel::Z15 => Self {
2056                chips: Some(3),
2057                fans: Some(2),
2058                boards: Some(3),
2059            },
2060            AntMinerModel::Z15Pro => Self {
2061                chips: Some(6),
2062                fans: Some(2),
2063                boards: Some(3),
2064            },
2065            AntMinerModel::S17 => Self {
2066                chips: Some(48),
2067                fans: Some(4),
2068                boards: Some(3),
2069            },
2070            AntMinerModel::S17Plus => Self {
2071                chips: Some(65),
2072                fans: Some(4),
2073                boards: Some(3),
2074            },
2075            AntMinerModel::S17Pro => Self {
2076                chips: Some(48),
2077                fans: Some(4),
2078                boards: Some(3),
2079            },
2080            AntMinerModel::S17e => Self {
2081                chips: Some(135),
2082                fans: Some(4),
2083                boards: Some(3),
2084            },
2085            AntMinerModel::T17 => Self {
2086                chips: Some(30),
2087                fans: Some(4),
2088                boards: Some(3),
2089            },
2090            AntMinerModel::T17Plus => Self {
2091                chips: Some(44),
2092                fans: Some(4),
2093                boards: Some(3),
2094            },
2095            AntMinerModel::T17e => Self {
2096                chips: Some(78),
2097                fans: Some(4),
2098                boards: Some(3),
2099            },
2100            AntMinerModel::S19 => Self {
2101                chips: Some(76),
2102                fans: Some(4),
2103                boards: Some(3),
2104            },
2105            AntMinerModel::S19L => Self {
2106                chips: Some(76),
2107                fans: Some(4),
2108                boards: Some(3),
2109            },
2110            AntMinerModel::S19Pro => Self {
2111                chips: Some(114),
2112                fans: Some(4),
2113                boards: Some(3),
2114            },
2115            AntMinerModel::S19j => Self {
2116                chips: Some(114),
2117                fans: Some(4),
2118                boards: Some(3),
2119            },
2120            AntMinerModel::S19i => Self {
2121                chips: Some(80),
2122                fans: Some(4),
2123                boards: Some(3),
2124            },
2125            AntMinerModel::S19Plus => Self {
2126                chips: Some(80),
2127                fans: Some(4),
2128                boards: Some(3),
2129            },
2130            AntMinerModel::S19jNoPIC => Self {
2131                chips: Some(88),
2132                fans: Some(4),
2133                boards: Some(3),
2134            },
2135            AntMinerModel::S19ProPlus => Self {
2136                chips: Some(120),
2137                fans: Some(4),
2138                boards: Some(3),
2139            },
2140            AntMinerModel::S19jPro => Self {
2141                chips: Some(126),
2142                fans: Some(4),
2143                boards: Some(3),
2144            },
2145            AntMinerModel::S19jProPlus => Self {
2146                chips: Some(120),
2147                fans: Some(4),
2148                boards: Some(3),
2149            },
2150            AntMinerModel::S19XP => Self {
2151                chips: Some(110),
2152                fans: Some(4),
2153                boards: Some(3),
2154            },
2155            AntMinerModel::S19a => Self {
2156                chips: Some(72),
2157                fans: Some(4),
2158                boards: Some(3),
2159            },
2160            AntMinerModel::S19aPro => Self {
2161                chips: Some(100),
2162                fans: Some(4),
2163                boards: Some(3),
2164            },
2165            AntMinerModel::S19Hydro => Self {
2166                chips: Some(104),
2167                fans: Some(0),
2168                boards: Some(4),
2169            },
2170            AntMinerModel::S19ProHydro => Self {
2171                chips: Some(180),
2172                fans: Some(0),
2173                boards: Some(4),
2174            },
2175            AntMinerModel::S19ProPlusHydro => Self {
2176                chips: Some(180),
2177                fans: Some(0),
2178                boards: Some(4),
2179            },
2180            AntMinerModel::S19KPro => Self {
2181                chips: Some(77),
2182                fans: Some(4),
2183                boards: Some(3),
2184            },
2185            AntMinerModel::S19jXP => Self {
2186                chips: Some(110),
2187                fans: Some(4),
2188                boards: Some(3),
2189            },
2190            AntMinerModel::T19 => Self {
2191                chips: Some(76),
2192                fans: Some(4),
2193                boards: Some(3),
2194            },
2195            AntMinerModel::S21 => Self {
2196                chips: Some(108),
2197                fans: Some(4),
2198                boards: Some(3),
2199            },
2200            AntMinerModel::S21Plus => Self {
2201                chips: Some(55),
2202                fans: Some(4),
2203                boards: Some(3),
2204            },
2205            AntMinerModel::S21PlusHydro => Self {
2206                chips: Some(95),
2207                fans: Some(0),
2208                boards: Some(3),
2209            },
2210            AntMinerModel::S21Pro => Self {
2211                chips: Some(65),
2212                fans: Some(4),
2213                boards: Some(3),
2214            },
2215            AntMinerModel::S21XP => Self {
2216                chips: Some(91),
2217                fans: Some(4),
2218                boards: Some(3),
2219            },
2220            AntMinerModel::T21 => Self {
2221                chips: Some(108),
2222                fans: Some(4),
2223                boards: Some(3),
2224            },
2225            AntMinerModel::S21Hydro => Self {
2226                chips: Some(216),
2227                fans: Some(0),
2228                boards: Some(3),
2229            },
2230        }
2231    }
2232}