<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Доступ к информации о железе на OpenWRT]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Доступ к информации о железе на OpenWRT форума Аппаратное обеспечение на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 31 Jul 2026 00:54:32 -0400</pubDate>
		<item>
			<title>Доступ к информации о железе на OpenWRT</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376343">Доступ к информации о железе на OpenWRT</a></b> <i>Аппаратное обеспечение</i> в форуме <a href="http://mikrotik.moscow/forum/forum58/">Аппаратное обеспечение</a>. <br />
			Спасибо за помощь, я отредактировал патч, который вы прислали, и он работает — серийный номер теперь доступен в cpuinfo.<br /><br />--- a/arch/mips/ath79/mach-rb95x.c &nbsp;<br />+++ b/arch/mips/ath79/mach-rb95x.c &nbsp;<br />@@ -11,7 +11,7 @@ &nbsp;<br /> &nbsp;*/<br /><br /> #define pr_fmt(fmt) "rb95x: " fmt &nbsp;<br />- &nbsp;<br />+#include &lt;asm/prom.h&gt; &nbsp;<br /> #include &lt;linux/version.h&gt; &nbsp;<br /> #include &lt;linux/phy.h&gt; &nbsp;<br /> #include &lt;linux/delay.h&gt; &nbsp;<br />@@ -251,11 +251,17 @@ static int __init rb95x_setup(void) &nbsp;<br /> { &nbsp;<br /> 	const struct rb_info *info;<br /><br /> 	info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x10000); &nbsp;<br /> 	if (!info) &nbsp;<br /> 		return -EINVAL; &nbsp;<br />+	/* Устанавливаем серийный номер Mikrotik */ &nbsp;<br />+	if (info-&gt;board_serial) { &nbsp;<br />+		mips_set_machine_serial(info-&gt;board_serial); &nbsp;<br />+	} else &nbsp;<br />+		pr_err("Серийный номер Mikrotik не найден\n"); &nbsp;<br />+ &nbsp;<br /> 	rb95x_nand_init();<br /><br /> 	return 0; &nbsp;<br /> } &nbsp;<br />--- a/arch/mips/include/asm/prom.h &nbsp;<br />+++ b/arch/mips/include/asm/prom.h &nbsp;<br />@@ -30,5 +30,7 @@ static inline void device_tree_init(void &nbsp;<br /><br /> extern char *mips_get_machine_name(void); &nbsp;<br /> extern void mips_set_machine_name(const char *name); &nbsp;<br />+extern char *mips_get_machine_serial(void); &nbsp;<br />+extern void mips_set_machine_serial(char *serial); &nbsp;<br /><br /> #endif /* __ASM_PROM_H */ &nbsp;<br />--- a/arch/mips/kernel/proc.c &nbsp;<br />+++ b/arch/mips/kernel/proc.c &nbsp;<br />@@ -55,6 +55,11 @@ static int show_cpuinfo(struct seq_file &nbsp;<br /> 		if (mips_get_machine_name()) &nbsp;<br /> 			seq_printf(m, "machine\t\t\t: %s\n", &nbsp;<br /> 				 &nbsp; mips_get_machine_name()); &nbsp;<br />+ &nbsp;<br />+		/* Показываем серийный номер производителя */ &nbsp;<br />+		if (mips_get_machine_serial()) &nbsp;<br />+			seq_printf(m, "serial number\t\t: %s\n", &nbsp;<br />+				mips_get_machine_serial()); &nbsp;<br /> 	} &nbsp;<br /><br /> 	seq_printf(m, "processor\t\t: %ld\n", n); &nbsp;<br />--- a/arch/mips/kernel/prom.c &nbsp;<br />+++ b/arch/mips/kernel/prom.c &nbsp;<br />@@ -23,6 +23,7 @@ &nbsp;<br /> #include &lt;asm/prom.h&gt; &nbsp;<br /><br /> static char mips_machine_name[64] = "Unknown";  <br />+char *mips_machine_serial = "None"; &nbsp;<br /><br /> __init void mips_set_machine_name(const char *name) &nbsp;<br /> { &nbsp;<br />@@ -38,6 +39,19 @@ char *mips_get_machine_name(void) &nbsp;<br /> 	return mips_machine_name; &nbsp;<br /> } &nbsp;<br /><br />+__init void mips_set_machine_serial(char *serial) &nbsp;<br />+{ &nbsp;<br />+	if (serial == NULL) &nbsp;<br />+		return; &nbsp;<br />+ &nbsp;<br />+	mips_machine_serial = serial; &nbsp;<br />+} &nbsp;<br />+ &nbsp;<br />+char *mips_get_machine_serial(void) &nbsp;<br />+{ &nbsp;<br />+	return mips_machine_serial; &nbsp;<br />+} &nbsp;<br />+ &nbsp;<br /> #ifdef CONFIG_USE_OF &nbsp;<br /> void __init early_init_dt_add_memory_arch(u64 base, u64 size) &nbsp;<br /> { &nbsp;<br />--- a/arch/mips/ath79/routerboot.h &nbsp;<br />+++ b/arch/mips/ath79/routerboot.h &nbsp;<br />@@ -18,6 +18,7 @@ struct rb_info { &nbsp;<br /> 	unsigned int soft_cfg_offs;<br /><br /> 	const char *board_name; &nbsp;<br />+	char *board_serial; &nbsp;<br /> 	u32 hw_options; &nbsp;<br /> }; &nbsp;<br /><br />--- a/arch/mips/ath79/routerboot.c &nbsp;<br />+++ b/arch/mips/ath79/routerboot.c &nbsp;<br />@@ -164,6 +164,20 @@ rb_get_board_name(void) &nbsp;<br /> 	return tag; &nbsp;<br /> } &nbsp;<br /><br />+__init char * &nbsp;<br />+rb_get_board_serial(void) &nbsp;<br />+{ &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp;u16 tag_len; &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp;u8 *tag; &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp;int err; &nbsp;<br />+ &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp;err = rb_find_hard_cfg_tag(RB_ID_SERIAL_NUMBER, &tag, &tag_len); &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp;if (err) &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL; &nbsp;<br />+ &nbsp;<br />+ &nbsp; &nbsp; &nbsp; &nbsp;return tag; &nbsp;<br />+} &nbsp;<br />+ &nbsp;<br /> __init u32 &nbsp;<br /> rb_get_hw_options(void) &nbsp;<br /> { &nbsp;<br />@@ -295,6 +309,7 @@ rb_init_info(void *data, unsigned int si &nbsp;<br /> 		return NULL; &nbsp;<br /><br /> 	rb_info.board_name = rb_get_board_name(); &nbsp;<br />+	rb_info.board_serial = rb_get_board_serial(); &nbsp;<br /> 	rb_info.hw_options = rb_get_hw_options(); &nbsp;<br /><br /> 	return &rb_info; <br />
			<i>18.02.2019 09:28:00, vldtoma.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376343</link>
			<guid>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376343</guid>
			<pubDate>Mon, 18 Feb 2019 09:28:00 -0500</pubDate>
			<category>Аппаратное обеспечение</category>
		</item>
		<item>
			<title>Доступ к информации о железе на OpenWRT</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376342">Доступ к информации о железе на OpenWRT</a></b> <i>Аппаратное обеспечение</i> в форуме <a href="http://mikrotik.moscow/forum/forum58/">Аппаратное обеспечение</a>. <br />
			У тебя стоит Mikrotik RouterBOARD 951 (mach-rb95x.c), а я патчил только (mach-rbspi.c), потому что использую серию rb-hap. Тебе нужно добавить следующий кусок кода в файл mach-rb95x.c внутри функции rb95x_setup(void):<br /><br />/* Установка серийного номера Mikrotik */<br />if (info-&gt;board_serial) {<br /> &nbsp; &nbsp;mips_set_machine_serial(info-&gt;board_serial);<br />} else<br /> &nbsp; &nbsp;pr_err("Серийный номер Mikrotik не найден\n");<br /><br />Это должно выглядеть примерно так:<br /><br />static int __init rb95x_setup(void)<br />{<br /> &nbsp; &nbsp;const struct rb_info *info;<br /><br /> &nbsp; &nbsp;info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x10000);<br /> &nbsp; &nbsp;if (!info)<br /> &nbsp; &nbsp; &nbsp; &nbsp;return -EINVAL;<br /><br /> &nbsp; &nbsp;/* Установка серийного номера Mikrotik */<br /> &nbsp; &nbsp;if (info-&gt;board_serial) {<br /> &nbsp; &nbsp; &nbsp; &nbsp;mips_set_machine_serial(info-&gt;board_serial);<br /> &nbsp; &nbsp;} else<br /> &nbsp; &nbsp; &nbsp; &nbsp;pr_err("Серийный номер Mikrotik не найден\n");<br /><br /> &nbsp; &nbsp;rb95x_nand_init();<br /><br /> &nbsp; &nbsp;return 0;<br />} <br />
			<i>06.02.2019 21:50:00, idahorazor.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376342</link>
			<guid>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376342</guid>
			<pubDate>Wed, 06 Feb 2019 21:50:00 -0500</pubDate>
			<category>Аппаратное обеспечение</category>
		</item>
		<item>
			<title>Доступ к информации о железе на OpenWRT</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376341">Доступ к информации о железе на OpenWRT</a></b> <i>Аппаратное обеспечение</i> в форуме <a href="http://mikrotik.moscow/forum/forum58/">Аппаратное обеспечение</a>. <br />
			Я использовал ваш патч, но он не работает. В файле /proc/cpuinfo есть поле с серийным номером, но там написано None:<br /><br />system type		: Atheros AR9344 rev 3 &nbsp;<br />machine			: MikroTik RouterBOARD 951Ui-2HnD &nbsp;<br />serial number		: None &nbsp;<br />processor		: 0 &nbsp;<br />cpu model		: MIPS 74Kc V4.12 &nbsp;<br />BogoMIPS		: 299.82 &nbsp;<br />wait instruction	: yes &nbsp;<br />microsecond timers	: yes &nbsp;<br />tlb_entries		: 32 &nbsp;<br />extra interrupt vector	: yes &nbsp;<br />hardware watchpoint	: yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]  <br />isa			: mips1 mips2 mips32r1 mips32r2 &nbsp;<br />ASEs implemented	: mips16 dsp dsp2 &nbsp;<br />shadow register sets	: 1 &nbsp;<br />kscratch registers	: 0 &nbsp;<br />package			: 0 &nbsp;<br />core			: 0 &nbsp;<br />VCED exceptions		: not available &nbsp;<br />VCEI exceptions		: not available &nbsp;<br /><br />Есть какие-нибудь советы? Спасибо. <br />
			<i>06.02.2019 12:04:00, vldtoma.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376341</link>
			<guid>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376341</guid>
			<pubDate>Wed, 06 Feb 2019 12:04:00 -0500</pubDate>
			<category>Аппаратное обеспечение</category>
		</item>
		<item>
			<title>Доступ к информации о железе на OpenWRT</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376340">Доступ к информации о железе на OpenWRT</a></b> <i>Аппаратное обеспечение</i> в форуме <a href="http://mikrotik.moscow/forum/forum58/">Аппаратное обеспечение</a>. <br />
			Это патч, который я придумал для OpenWRT. Сохрани следующий патч под именем 951-MIPS-ath79-add-mikrotik-serial.patch. Затем скопируй этот файл в target/linux/ar71xx/patches-4.14/951-MIPS-ath79-add-mikrotik-serial.patch и скомпилируй OpenWRT.<br /><br />--- a/arch/mips/ath79/mach-rbspi.c &nbsp;<br />+++ b/arch/mips/ath79/mach-rbspi.c &nbsp;<br />@@ -690,6 +690,12 @@ static __init const struct rb_info *rbsp &nbsp;<br />	if (!info) &nbsp;<br />		return NULL; &nbsp;<br /> &nbsp;<br />+	/* Устанавливаем серийный номер Mikrotik */ &nbsp;<br />+	if (info-&gt;board_serial) { &nbsp;<br />+		mips_set_machine_serial(info-&gt;board_serial); &nbsp;<br />+	} else &nbsp;<br />+		pr_err("Серийный номер Mikrotik не найден\n"); &nbsp;<br />+ &nbsp;<br />	if (info-&gt;board_name) { &nbsp;<br />		str = "RouterBOARD "; &nbsp;<br />		if (strncmp(info-&gt;board_name, str, strlen(str))) {<br /> &nbsp;<br />--- a/arch/mips/include/asm/prom.h &nbsp;<br />+++ b/arch/mips/include/asm/prom.h &nbsp;<br />@@ -30,5 +30,7 @@ static inline void device_tree_init(void &nbsp;<br /> &nbsp;<br />	extern char *mips_get_machine_name(void); &nbsp;<br />	extern void mips_set_machine_name(const char *name); &nbsp;<br />+	extern char *mips_get_machine_serial(void); &nbsp;<br />+	extern void mips_set_machine_serial(char *serial); &nbsp;<br /> &nbsp;<br /> #endif /* __ASM_PROM_H */ &nbsp;<br /> &nbsp;<br />--- a/arch/mips/kernel/proc.c &nbsp;<br />+++ b/arch/mips/kernel/proc.c &nbsp;<br />@@ -55,6 +55,11 @@ static int show_cpuinfo(struct seq_file &nbsp;<br />		if (mips_get_machine_name()) &nbsp;<br />			seq_printf(m, "machine\t\t\t: %s\n", &nbsp;<br />				 &nbsp; mips_get_machine_name()); &nbsp;<br />+ &nbsp;<br />+		/* Показать серийный номер производителя */ &nbsp;<br />+		if (mips_get_machine_serial()) &nbsp;<br />+			seq_printf(m, "serial number\t\t: %s\n", &nbsp;<br />+				mips_get_machine_serial()); &nbsp;<br />	} &nbsp;<br /> &nbsp;<br />	seq_printf(m, "processor\t\t: %ld\n", n); &nbsp;<br /> &nbsp;<br />--- a/arch/mips/kernel/prom.c &nbsp;<br />+++ b/arch/mips/kernel/prom.c &nbsp;<br />@@ -23,6 +23,7 @@ &nbsp;<br /> #include &lt;asm/prom.h&gt; &nbsp;<br /> &nbsp;<br /> static char mips_machine_name[64] = "Unknown";  <br />+char *mips_machine_serial = "None"; &nbsp;<br /> &nbsp;<br /> __init void mips_set_machine_name(const char *name) &nbsp;<br /> { &nbsp;<br />@@ -38,6 +39,19 @@ char *mips_get_machine_name(void) &nbsp;<br />	return mips_machine_name; &nbsp;<br /> } &nbsp;<br /> &nbsp;<br />+__init void mips_set_machine_serial(char *serial) &nbsp;<br />+{ &nbsp;<br />+	if (serial == NULL) &nbsp;<br />+		return; &nbsp;<br />+ &nbsp;<br />+	mips_machine_serial = serial; &nbsp;<br />+} &nbsp;<br />+ &nbsp;<br />+char *mips_get_machine_serial(void) &nbsp;<br />+{ &nbsp;<br />+	return mips_machine_serial; &nbsp;<br />+} &nbsp;<br />+ &nbsp;<br /> #ifdef CONFIG_USE_OF &nbsp;<br /> void __init early_init_dt_add_memory_arch(u64 base, u64 size) &nbsp;<br /> { &nbsp;<br />--- a/arch/mips/ath79/routerboot.h &nbsp;<br />+++ b/arch/mips/ath79/routerboot.h &nbsp;<br />@@ -18,6 +18,7 @@ struct rb_info { &nbsp;<br />	unsigned int soft_cfg_offs; &nbsp;<br /> &nbsp;<br />	const char *board_name; &nbsp;<br />+	char *board_serial; &nbsp;<br />	u32 hw_options; &nbsp;<br /> }; &nbsp;<br /> &nbsp;<br />--- a/arch/mips/ath79/routerboot.c &nbsp;<br />+++ b/arch/mips/ath79/routerboot.c &nbsp;<br />@@ -164,6 +164,20 @@ rb_get_board_name(void) &nbsp;<br />	return tag; &nbsp;<br /> } &nbsp;<br /> &nbsp;<br />+__init char * &nbsp;<br />+rb_get_board_serial(void) &nbsp;<br />+{ &nbsp;<br />+	u16 tag_len; &nbsp;<br />+	u8 *tag; &nbsp;<br />+	int err; &nbsp;<br />+ &nbsp;<br />+	err = rb_find_hard_cfg_tag(RB_ID_SERIAL_NUMBER, &tag, &tag_len); &nbsp;<br />+	if (err) &nbsp;<br />+		return NULL; &nbsp;<br />+ &nbsp;<br />+	return tag; &nbsp;<br />+} &nbsp;<br />+ &nbsp;<br /> __init u32 &nbsp;<br /> rb_get_hw_options(void) &nbsp;<br /> { &nbsp;<br />@@ -295,6 +309,7 @@ rb_init_info(void *data, unsigned int si &nbsp;<br />		return NULL; &nbsp;<br /> &nbsp;<br />	rb_info.board_name = rb_get_board_name(); &nbsp;<br />+	rb_info.board_serial = rb_get_board_serial(); &nbsp;<br />	rb_info.hw_options = rb_get_hw_options(); &nbsp;<br /> &nbsp;<br />	return &rb_info; &nbsp;<br /><br />Этот патч добавит вывод серийного номера в /proc/cpuinfo<br /><br />root@OpenWRT:/# cat /proc/cpuinfo &nbsp;<br />system type &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Qualcomm Atheros QCA9558 ver 1 rev 0 &nbsp;<br />machine &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : MikroTik RouterBOARD 962UiGS-5HacT2HnT &nbsp;<br />serial number &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 6DEC05469E1F &nbsp;<br />processor &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 0 &nbsp;<br />cpu model &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : MIPS 74Kc V5.0 &nbsp;<br />BogoMIPS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 358.80 &nbsp;<br />wait instruction &nbsp; &nbsp; &nbsp; &nbsp;: yes &nbsp;<br />microsecond timers &nbsp; &nbsp; &nbsp;: yes &nbsp;<br />tlb_entries &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 32 &nbsp;<br />extra interrupt vector &nbsp;: yes &nbsp;<br />hardware watchpoint &nbsp; &nbsp; : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]  <br />isa &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : mips1 mips2 mips32r1 mips32r2 &nbsp;<br />ASEs implemented &nbsp; &nbsp; &nbsp; &nbsp;: mips16 dsp dsp2 &nbsp;<br />Options implemented &nbsp; &nbsp; : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit cdmm nan_legacy nan_2008 contextconfig perf &nbsp;<br />shadow register sets &nbsp; &nbsp;: 1 &nbsp;<br />kscratch registers &nbsp; &nbsp; &nbsp;: 0 &nbsp;<br />package &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 0 &nbsp;<br />core &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 0 &nbsp;<br />VCED exceptions &nbsp; &nbsp; &nbsp; &nbsp; : not available &nbsp;<br />VCEI exceptions &nbsp; &nbsp; &nbsp; &nbsp; : not available &nbsp;<br /><br />Надеюсь, это поможет! <br />
			<i>05.02.2019 23:31:00, idahorazor.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376340</link>
			<guid>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376340</guid>
			<pubDate>Tue, 05 Feb 2019 23:31:00 -0500</pubDate>
			<category>Аппаратное обеспечение</category>
		</item>
		<item>
			<title>Доступ к информации о железе на OpenWRT</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376339">Доступ к информации о железе на OpenWRT</a></b> <i>Аппаратное обеспечение</i> в форуме <a href="http://mikrotik.moscow/forum/forum58/">Аппаратное обеспечение</a>. <br />
			Ты нашёл способ узнать серийный номер? <br />
			<i>17.12.2018 15:26:00, vldtoma.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376339</link>
			<guid>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376339</guid>
			<pubDate>Mon, 17 Dec 2018 15:26:00 -0500</pubDate>
			<category>Аппаратное обеспечение</category>
		</item>
		<item>
			<title>Доступ к информации о железе на OpenWRT</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376338">Доступ к информации о железе на OpenWRT</a></b> <i>Аппаратное обеспечение</i> в форуме <a href="http://mikrotik.moscow/forum/forum58/">Аппаратное обеспечение</a>. <br />
			Есть ли какой-то способ получить информацию о плате (конкретно серийный номер платы) через OpenWRT? Очевидно, что RouterOS как-то это делает. Я нашёл только один способ, но он не на 100% надёжный и не работает на платах без последовательного порта. Формат флеша через RooterBOOT: cat /proc/mtd должен выводить что-то вроде<br /><br />root@OpenWrt:/tmp# cat /proc/mtd &nbsp;<br />dev: &nbsp; &nbsp;size &nbsp; erasesize &nbsp;name &nbsp;<br />mtd0: 0000b000 00001000 "routerboot" &nbsp;<br />mtd1: 00001000 00001000 "hard_config" &nbsp;<br />mtd2: 00002000 00001000 "bios" &nbsp;<br />mtd3: 00001000 00001000 "soft_config" &nbsp;<br />mtd4: 00040000 00004000 "booter" &nbsp;<br />mtd5: 005c0000 00004000 "kernel" &nbsp;<br />mtd6: 03a00000 00004000 "rootfs"<br /><br />Ищите серийный номер в /dev/mtdblock1. При условии, что у вас такая же плата и такая же версия RooterBOOT, серийник должен находиться в том же смещении. <br />
			<i>30.05.2012 14:26:00, VFXCode.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376338</link>
			<guid>http://mikrotik.moscow/forum/forum58/83411-dostup-k-informatsii-o-zheleze-na-openwrt/message376338</guid>
			<pubDate>Wed, 30 May 2012 14:26:00 -0400</pubDate>
			<category>Аппаратное обеспечение</category>
		</item>
	</channel>
</rss>
