Skip to content

Commit d654a54

Browse files
committed
add support for redmi-ax6000
1 parent 3223e5d commit d654a54

File tree

2 files changed

+89
-85
lines changed

2 files changed

+89
-85
lines changed

mitool.c

Lines changed: 81 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,29 @@
1717

1818
#define BUFSIZE 65532
1919

20-
#if defined(__mips__)
21-
static int iscr660x = 1;
22-
#else
23-
static int iscr660x = 0;
24-
#endif
20+
static int modelid = 0;
2521

2622
struct model_s {
23+
int modelid;
2724
char *pid;
2825
char *model;
2926
};
3027

3128
static const struct model_s model_list[] = {
32-
#if defined(__mips__)
33-
{ "CR6606", "CR6606" },//xiaomi
34-
{ "CR6608", "CR6608" },//xiaomi
35-
{ "CR6609", "CR6609" },//xiaomi
36-
#else
37-
{ "RA67", "AX5" },//redmi
38-
{ "RA69", "AX6" },//redmi
39-
{ "RA70", "AX9000" },//xiaomi
40-
{ "RA72", "AX6000" },//xiaomi
41-
{ "RA80", "AX3000" },//xiaomi
42-
{ "RA81", "AX3000" },//redmi
43-
{ "RM1800", "AX1800" },//xiaomi
44-
{ "R1800", "AX1800" },//xiaomi
45-
{ "R3600", "AX3600" },//xiaomi
46-
#endif
47-
{ NULL, NULL },
29+
{ 1, "CR6606", "CR6606" },//xiaomi
30+
{ 2, "CR6608", "CR6608" },//xiaomi
31+
{ 3, "CR6609", "CR6609" },//xiaomi
32+
{ 4, "RA67", "AX5" },//redmi
33+
{ 5, "RA69", "AX6" },//redmi
34+
{ 6, "RA70", "AX9000" },//xiaomi
35+
{ 7, "RA72", "AX6000" },//xiaomi
36+
{ 8, "RA80", "AX3000" },//xiaomi
37+
{ 9, "RA81", "AX3000" },//redmi
38+
{ 10, "RM1800", "AX1800" },//xiaomi
39+
{ 11, "R1800", "AX1800" },//xiaomi
40+
{ 12, "R3600", "AX3600" },//xiaomi
41+
{ 13, "RB06", "AX6000" },//redmi
42+
{ -1, NULL, NULL },
4843
};
4944

5045
typedef struct
@@ -246,26 +241,6 @@ void MD5Final(MD5_CTX *context,unsigned char digest[16])
246241
MD5Encode(digest,context->state,16);
247242
}
248243

249-
static void usage(void)
250-
{
251-
fprintf(stderr, "Copyright (c) 2020-2021, paldier<[email protected]>.\n");
252-
fprintf(stderr, "Usage: mitool\n");
253-
fprintf(stderr, "mitool lock\n");
254-
fprintf(stderr, "\tlock %s and auto reboot\n", iscr660x ? "mtd2" : "mtd9");
255-
fprintf(stderr, "mitool unlock\n");
256-
fprintf(stderr, "\tunlock %s and auto reboot\n", iscr660x ? "mtd2" : "mtd9");
257-
fprintf(stderr, "mitool password\n");
258-
fprintf(stderr, "\tprintf default password\n");
259-
fprintf(stderr, "mitool hack\n");
260-
fprintf(stderr, "\tset ssh telnet uart to default enable\n");
261-
fprintf(stderr, "mitool model\n");
262-
fprintf(stderr, "\tshow model\n");
263-
fprintf(stderr, "mitool sn\n");
264-
fprintf(stderr, "\tshow sn\n");
265-
fprintf(stderr, "mitool setsn xxxxxxxx\n");
266-
fprintf(stderr, "\tset sn\n");
267-
}
268-
269244
static const unsigned int crc32tab[] = {
270245
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL,
271246
0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L,
@@ -418,21 +393,10 @@ static int load_buf(void)
418393
FILE *fd;
419394
int bdata;
420395
char path[11];
421-
char *mtdname = NULL;
422-
if(iscr660x)
423-
mtdname = "Bdata";
424-
else
425-
mtdname = "bdata";
426-
bdata = find_mtd(mtdname);
427-
#if defined(__mips__)
428-
if(bdata != 2){
429-
#else
430-
if(bdata != 9 && bdata != 15 && bdata != 18){
431-
#endif
432-
//if((iscr660x && bdata != 2) || (!iscr660x && bdata != 9 && bdata != 15 && bdata != 18)){
433-
printf("Unsupport model!\n");
434-
return -1;
435-
}
396+
bdata = find_mtd("Bdata");
397+
if(bdata == -1)
398+
bdata = find_mtd("bdata");
399+
436400
memset(path, 0, sizeof(path));
437401
snprintf(path, sizeof(path), "/dev/mtd%d", bdata);
438402
fd = fopen(path, "rb");
@@ -451,23 +415,13 @@ static int lock_mtd(int t)
451415
unsigned char temp[4];
452416
char path[11];
453417
char path2[16];
454-
char *mtdname = NULL;
455418
int bdata;
456419
int crash = find_mtd("crash");
457-
if(iscr660x)
458-
mtdname = "Bdata";
459-
else
460-
mtdname = "bdata";
461-
bdata = find_mtd(mtdname);
462-
#if defined(__mips__)
463-
if(bdata != 2){
464-
#else
465-
if(bdata != 9 && bdata != 15 && bdata != 18){
466-
#endif
467-
//if((iscr660x && bdata != 2) || (!iscr660x && bdata != 9 && bdata != 15 && bdata != 18)){
468-
printf("Unsupport model!\n");
469-
return -1;
470-
}
420+
421+
bdata = find_mtd("Bdata");
422+
if(bdata == -1)
423+
bdata = find_mtd("bdata");
424+
471425
memset(path, 0, sizeof(path));
472426
memset(path2, 0, sizeof(path2));
473427
snprintf(path, sizeof(path), "/dev/mtd%d", crash);
@@ -547,6 +501,20 @@ char *get_model(char *pid)
547501
return model;
548502
}
549503

504+
int get_modelid(char *pid)
505+
{
506+
int id;
507+
const struct model_s *p;
508+
509+
for (p = &model_list[0]; p->pid; ++p) {
510+
if (!strcmp(pid, p->pid)) {
511+
id = p->modelid;
512+
break;
513+
}
514+
}
515+
return id;
516+
}
517+
550518
static int model_show(void)
551519
{
552520
int i;
@@ -557,6 +525,43 @@ static int model_show(void)
557525
printf("model=%s\n", get_model(&buf[i+6]));
558526
}
559527

528+
static char *show_lockmtd()
529+
{
530+
int i;
531+
if(modelid == 0){
532+
if(load_buf()<0)
533+
return "unknown";
534+
i = GetSubStrPos(buf, "model");
535+
modelid = get_modelid(&buf[i+6]);
536+
}
537+
if(modelid == 1 || modelid == 2 || modelid == 3)
538+
return "mtd2";
539+
else if(modelid == 13)
540+
return "mtd6";
541+
else
542+
return "mtd6";
543+
}
544+
545+
static void usage(void)
546+
{
547+
fprintf(stderr, "Copyright (c) 2020-2022, paldier<[email protected]>.\n");
548+
fprintf(stderr, "Usage: mitool\n");
549+
fprintf(stderr, "mitool lock\n");
550+
fprintf(stderr, "\tlock %s and auto reboot\n", show_lockmtd);
551+
fprintf(stderr, "mitool unlock\n");
552+
fprintf(stderr, "\tunlock %s and auto reboot\n", show_lockmtd);
553+
fprintf(stderr, "mitool password\n");
554+
fprintf(stderr, "\tprintf default password\n");
555+
fprintf(stderr, "mitool hack\n");
556+
fprintf(stderr, "\tset ssh telnet uart to default enable\n");
557+
fprintf(stderr, "mitool model\n");
558+
fprintf(stderr, "\tshow model\n");
559+
fprintf(stderr, "mitool sn\n");
560+
fprintf(stderr, "\tshow sn\n");
561+
fprintf(stderr, "mitool setsn xxxxxxxx\n");
562+
fprintf(stderr, "\tset sn\n");
563+
}
564+
560565
static int password_show(void)
561566
{
562567
int i,j;
@@ -588,12 +593,10 @@ static int calc_img_crc()
588593
FILE *fd;
589594
int bdata;
590595
char path[16];
591-
char *mtdname = NULL;
592-
if(iscr660x)
593-
mtdname = "Bdata";
594-
else
595-
mtdname = "bdata";
596-
bdata = find_mtd(mtdname);
596+
597+
bdata = find_mtd("Bdata");
598+
if(bdata == -1)
599+
bdata = find_mtd("bdata");
597600

598601
memset(path, 0, sizeof(path));
599602
snprintf(path, sizeof(path), "/dev/mtdblock%d", bdata);
@@ -746,7 +749,7 @@ int main(int argc, char **argv)
746749
exit(1);
747750
}
748751
password_show();
749-
printf("set ssh_en=1 telnet_en=1 uart_en=1\nNOTE!!! ssh default/telnet usesrname:root password:%s\n",password);
752+
printf("set ssh_en=1 telnet_en=1 uart_en=1\nNOTE!!! ssh/telnet default usesrname:root\ndefault password:%s\n",password);
750753
printf("automatic lock mtd and reboot\n");
751754
lock_mtd(1);
752755
} else if (!strcmp(argv[1], "lock"))

mitool.sh

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/bin/sh
22

3+
PWD=$(pwd)
34
arch=`uname -m`
45
archver=`cat /proc/cpuinfo | grep architecture | sed -n '1p' | awk -F ':' '{printf $2}'`
56
if [ "$arch" == "mips" ];then
@@ -12,19 +13,19 @@ else
1213
fi
1314
fi
1415
if [ "$1" == "unlock" ];then
15-
/tmp/$tool unlock
16+
$PWD/$tool unlock
1617
elif [ "$1" == "hack" ];then
17-
/tmp/$tool hack
18+
$PWD/$tool hack
1819
elif [ "$1" == "lock" ];then
19-
/tmp/$tool lock
20+
$PWD/$tool lock
2021
elif [ "$1" == "password" ];then
21-
/tmp/$tool password
22+
$PWD/$tool password
2223
elif [ "$1" == "model" ];then
23-
/tmp/$tool model
24+
$PWD/$tool model
2425
elif [ "$1" == "sn" ];then
25-
/tmp/$tool sn
26+
$PWD/$tool sn
2627
elif [ "$1" == "setsn" ];then
27-
/tmp/$tool setsn $2
28+
$PWD/$tool setsn $2
2829
else
2930
echo "what?"
3031
fi

0 commit comments

Comments
 (0)