Có một số số sê-ri có sẵn từ cấp độ hệ điều hành?


12

Tôi muốn xác định phiên bản phần cứng RaspberryPI nào đang khởi động trên mạng của tôi.

Tôi có kế hoạch sử dụng RẤT NHIỀU (không chỉ 10) trong số họ làm khách hàng trong một giải pháp lớn hơn, nhưng tôi muốn sử dụng lại hình ảnh SD cho tất cả họ.

Có cách nào để xác định chúng với nhau không, trừ khi tôi đặt mã serial của một số người trong một tệp ở đâu đó trong HĐH?

Btw. Tôi sử dụng MONO / C # để lập trình, nhưng tôi chỉ tò mò muốn biết liệu PI có phần cứng nối tiếp nào đó hay không?

Câu trả lời:


3

Trong C # Mono tôi đang làm điều này:

private string GetRpiSerial()
{
    CommandSync("cat /proc/cpuinfo | grep Serial | cut -d ':' -f 2 > /home/pi/serial.txt");

    using (var sr = new StreamReader("/home/pi/serial.txt"))
    {
        return sr.ReadLine().Trim();
    }
}

public static void CommandSync(string cmd, string args)
{
    var info = new ProcessStartInfo();
    info.FileName = "/bin/bash";
    info.Arguments = string.Format("-c \"sudo {0} {1}\"", cmd, args);
    info.UseShellExecute = false;
    info.RedirectStandardOutput = true;

    var p = Process.Start(info);
    p.WaitForExit();
}

Và lấy bất cứ nơi nào với:

var rpiSerial = GetRpiSerial();

Câu trả lời này thậm chí còn tốt hơn câu trả lời ban đầu của Remo, vì nó bao gồm giải pháp trong C # như tôi đã hỏi ban đầu. Rất tốt đẹp của bạn để sản xuất này cho tất cả chúng ta.
BerggreenDK

13

Bạn có thể sử dụng cùng một số được sử dụng để mua giấy phép MPEG.

Trích dẫn mã bản quyền MPEG-2 :

Để tìm số sê-ri của bạn, hãy nhập cat /proc/cpuinfovào dòng lệnh như dưới đây:

pi@raspberrypi:~$ cat /proc/cpuinfo

Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 697.95
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7
Hardware        : BCM2708
Revision        : 1000002
Serial          : 000000000000000d

Serial là những gì bạn đang tìm kiếm.


Ahh, ý kiến ​​hay. Bạn có manh mối nào về cách lấy cái này từ Mono không?
BerggreenDK

Vấn đề duy nhất là khách hàng / người dùng sẽ phải mua giấy phép MPEG chỉ cho mục đích đó.
BerggreenDK

@BergreenDK. Không chắc chắn những gì bạn có ý nghĩa. Số sê-ri xuất hiện với lệnh cpuinfo là số sê-ri của CPU. Đó là dù bạn có giấy phép MPEG hay không.
Remo.D

1
Không, '00000 ... d' chỉ là một ví dụ. Hãy thử làm nó trên quả mâm xôi của bạn và bạn sẽ nhận được của bạn.
Remo.D

1
Đó là một mã phần cứng duy nhất cho bất kỳ Raspberry nào (tôi có hai trong số chúng), nó không dựa trên tệp. Tôi sẽ rất ngạc nhiên nếu bạn có nó từ Virtual Box.
Remo.D

6

Bạn có thể sử dụng địa chỉ MAC của bộ điều hợp ethernet; sử dụng một câu lệnh như thế này để trích xuất nó thành một biến:

mysn=`ifconfig eth0 | grep HWaddr |sed -e's/.*HWaddr\s\(\S*\).*/\1/'`

Một gợi ý hay. Nếu tôi chỉ có thể thấy tôi nên truy xuất cái này từ MONO như thế nào. Nhưng ý tưởng là tuyệt vời. Đã hoàn toàn quên suy nghĩ về mạng LAN trên tàu. Số MAC là đủ thực sự. Chỉ cần tìm ra cách lấy thông tin đó từ thư viện System.Net.
BerggreenDK


1
Lưu ý rằng bạn có thể sửa đổi địa chỉ MAC của quả mâm xôi. Đây chỉ là một giải pháp khả thi nếu bạn không cần phải hoàn toàn chắc chắn về danh tính của Raspberry Pi. Mã nối tiếp CPU có thể nhận được với cpuinfo không thể thay đổi.
Remo.D

được rồi, đó cũng là một điểm tuyệt vời Có, MAC có thể được thay đổi trên một số phần cứng LAN. Đúng. Nhưng tôi rất lo ngại rằng ai đó sẽ sao chép SDCARD của tôi và sau đó sử dụng nó cho nhiều khách hàng mà tôi không biết. Điều đó sẽ là xấu cho kiến ​​trúc của tôi về giải pháp.
BerggreenDK

Xin lỗi @TomG Tôi thực sự đánh giá cao ý tưởng của bạn và tôi sẽ sử dụng nó làm "dự phòng" để phát hiện các thiết bị phát sinh phần cứng Raspberry PI vì các chương trình máy khách của tôi sẽ là nền tảng chéo. Tôi ước tôi có thể đánh dấu hai câu trả lời trong trường hợp này.
BerggreenDK
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.