[Fire HD 8 and HD 10 General] DragonFire1024:
So I have been looking over both the mediatek and Amazon kernel sources to see what hardware files etc need to be imported for a rom. So I looked at the Amazon kernel source, and by accident and my habit of snooping around, happened to come across a build file that specifies certain USB properties. I almost passed it up, if I didn't see the words 'brom.' Now i don't know that this is going to be useful, but I did recently find out you can set the USB properties in Linux udev files, mainly the vendor and product IDs. I suspected a file property could be added to tell the machine the tablet is a mediatek device, not amazon. Well At least I was right about the IDs, but IDK about setting them. However maybe this information will be a bit more useful to you in terms of getting to brom easier and writing. If I am not mistaken, this file specifies the USB parameters to allow writing? (likely a very bad choice of words). Anyways I pasted it below for you. Perhaps this will make things a bit easier for you. This is from the Amazon Kernel here: https://xdaforums.com/hd8-hd10/development/amazon-fire-hd-102017-kernel-source-t3904021 in : Fire-HD10_7th_Gen-5.3.6.2-20180315/platform/vendor/mediatek/proprietary_mt8173b/external/datool/tty_usb_common

#include <arpa/inet.h>
#include "tty_usb.h"
#define TGT_TYPE_UNKNOWN 0
#define TGT_TYPE_BROM 1
#define TGT_TYPE_PRELOADER 2

static int _target_type = TGT_TYPE_UNKNOWN;
static int _match_usb_br(usb_ifc_info *ifc)
{
_target_type = TGT_TYPE_UNKNOWN;
if(ifc->vid == 0x0E8D && ifc->pid ==0x0003)
{
_target_type = TGT_TYPE_BROM;
return 0;
}
return -1;
}

static int _match_usb_pl(usb_ifc_info *ifc)
{
_target_type = TGT_TYPE_UNKNOWN;
if((ifc->vid == 0x0E8D && ifc->pid == 0x2000) ||
(ifc->vid == 0x0E8D && ifc->pid == 0x3000))
{
_target_type = TGT_TYPE_PRELOADER;
return 0;
}
return -1;
}

static int _match_usb_auto(usb_ifc_info *ifc)
{
if(_match_usb_br(ifc)==0)
return 0;
if(_match_usb_pl(ifc)==0)
return 0;
return -1;
}

tty_usb_handle *tty_usb_open_br(void)
{
return tty_usb_open(_match_usb_br);
}

tty_usb_handle *tty_usb_open_pl(void)
{
return tty_usb_open(_match_usb_pl);
}

tty_usb_handle *tty_usb_open_auto(void)
{
return tty_usb_open(_match_usb_auto);
}

bool tty_usb_is_target_brom(void)
{
return (_target_type==TGT_TYPE_BROM);
}

void tty_usb_w8(tty_usb_handle *h, uint8_t data)
{
tty_usb_write(h, &data, 1);
}

uint8_t tty_usb_r8(tty_usb_handle *h)
{
uint8_t data;
tty_usb_read(h, &data, 1);
return data;
}

int tty_usb_w8_echo(tty_usb_handle *h, uint8_t data)
{
tty_usb_w8(h, data);
if(tty_usb_r8(h)!=data) return -1;
return 0;
}

void tty_usb_w16(tty_usb_handle *h, uint16_t data)
{
data = htons(data);
tty_usb_write(h, &data, 2);
}

uint16_t tty_usb_r16(tty_usb_handle *h)
{
uint16_t data;
tty_usb_read(h, &data, 2);
return ntohs(data);
}

int tty_usb_w16_echo(tty_usb_handle *h, uint16_t data)
{
tty_usb_w16(h, data);
if(tty_usb_r16(h)!=data) return -1;
return 0;
}

void tty_usb_w32(tty_usb_handle *h, uint32_t data)
{
data = htonl(data);
tty_usb_write(h, &data, 4);
}

uint32_t tty_usb_r32(tty_usb_handle *h)
{
uint32_t data;
tty_usb_read(h, &data, 4);
return ntohl(data);
}

int tty_usb_w32_echo(tty_usb_handle *h, uint32_t data)
{
tty_usb_w32(h, data);
if(tty_usb_r32(h)!=data) return -1;
return 0;
}