Frigate NVR - akceleracja Coral TPU z lokalnym AI

Frigate to znakomite rozwiązanie dla obsługi kamer z rozpoznawaniem obiektów. Jest ściśle integrowalne z HA.

Ale do sprawnego działania wymaga lokalnego wsparcia sprzętowego. Dla najlepszych efektów bazuje na akceleracji TPU z Google Coral.

Oprogramowanie Frigate dla obsługi akceleracji Coral AI, pisane jest pod debianowe dystrybucje Linux.

Jako, że mamy kryzys w podaży elektroniki, płytek Coral zwyczajnie brakuje.
Obecnie w Polsce dostępne są jedynie w wersji PCi - M.2 E-key z dwoma procesorami TPU.

Tyle słowem wstępu.
C.D.N.

3 polubienia

O ile uruchomienie sprzętu Coral M.2 pod systemem Linux czy Windows jest dobrze opisane w dokumentacji:

To problemy zaczynają się w innych środowiskach, takich jak DiskStation Manager
DSM Synology. Instalacja samego działającego kontenera z Frigate nie stanowi problemu. Uruchomienie Coral USB w DSM czy Proxmox, to też jest już dobrze opisane.
Brakuje informacji jak uruchomić Coral PCI-e w systemie Synology. W/g instrukcji Coral, potrzebna jest komplikacja sterowników Apex i Gasket.

Poszukujemy z @bartik22 kogoś, kto ma doświadczenia w tej odmianie linuxa jakim jest system Synology. Kogoś kto pomoże w uruchomieniu Coral na serwerze Synology.

2 polubienia

Po podłączeniu Corala przez adapter do PCIE widzę w spisie, że urządzenie jest widoczne
(więc zakładam że to nie kwestia adaptera),
lecz jest nieznane i nie ma sterownika

$ lspci -k
...
0000:01:00.0 Class 0000: Device 1ac1:089a
        Subsystem: Device 1ac1:089a #<--to jest to i nie ma żadnego Kernel driver
0000:03:00.0 Class 0200: Device 10ec:8168 (rev 0c)
        Subsystem: Device 1028:0612
        Kernel driver in use: r8168
...

Dostałem podpowiedź że trzeba skompilować sterownik,
na forum Unride jest podany sposób, lecz nie potrafię go przełożyć na system synology.

1 polubienie

Linux to linux a jądro (kernel) linuxa jest jeden, kompiluje się pod określony hardware :slight_smile:.
Z instrukcji na unraid wynika, że nie trzeba kompilować jądra tylko trzeba dograć odpowiednie moduły co nie grozi “kernel panic” :laughing:, nie jest więc tak źle. - trzeba kompilować:

Przede wszystkim na początek jest do weryfikacji jaka jest wersja kernela, czy do pobrania jest najnowszy upgrade kernela a przede wszystkim czy dla swojego sprzetu możecie pobrać źródła kernela.
Na jakim etapie pojawił się problem zgodnie z instrukcją Get started with the M.2 or Mini PCIe Accelerator | Coral ?

2 polubienia

na każdym,

$ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
tee: /etc/apt/sources.list.d/coral-edgetpu.list: No such file or directory
deb https://packages.cloud.google.com/apt coral-edgetpu-stable main

$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0sudo: apt-key: command not found
100  2537  100  2537    0     0  22128      0 --:--:-- --:--:-- --:--:-- 22254
(23) Failed writing body

$ sudo apt-get update
sudo: apt-get: command not found

komendy są na pewno inne, tak jak na tym forum unride

Zacznij od poczatku:
wymagania: A computer with one of the following operating systems Linux: 64-bit version of Debian 10 and an x86-64 or ARMv8 system architecture
jaka wersja kernela: uname -r

/$ uname -a
Linux XPENOLOGY_DELL 4.4.59+ #25426 SMP PREEMPT Mon Dec 14 18:48:50 CST 2020 x86_64 GNU/Linux synology_apollolake_918+

DSM jest oryginalnym plikiem od synology
https://archive.synology.com/download/Os/DSM/6.2.3-25426

  • DSM_DS918+_25426.pat

Masz system Linux XPENOLOGY zainstalowany na jakiś sprzęcie Della?
lsmod | grep apex uzupelnienie do 20 znakow

nic nie wyrzuca, jest pusto
w dev/ nie ma żadnego apex

$ lsmod
Module                  Size  Used by
xt_ipvs                 2202  0
ip_vs_rr                1447  0
ip_vs                 127243  3 ip_vs_rr,xt_ipvs
xt_mark                 1317  0
iptable_mangle          1656  0
br_netfilter           13589  0
bridge                 55340  1 br_netfilter
stp                     1693  1 bridge
aufs                  194351  0
macvlan                13776  0
veth                    5094  0
xt_conntrack            3401  2
xt_addrtype             2893  1
nf_conntrack_ipv6       6563  0
nf_defrag_ipv6         23062  1 nf_conntrack_ipv6
ip6table_filter         1532  0
ip6_tables             14730  1 ip6table_filter
ipt_MASQUERADE          1213  4
xt_REDIRECT             1486  0
nf_nat_masquerade_ipv4     1929  1 ipt_MASQUERADE
xt_nat                  1977  6
iptable_nat             1959  2
nf_nat_ipv4             4903  1 iptable_nat
nf_nat_redirect         1395  1 xt_REDIRECT
nf_nat                 10925  4 nf_nat_redirect,nf_nat_ipv4,xt_nat,nf_nat_masquerade_ipv4
xt_recent               8550  0
xt_iprange              1648  0
xt_limit                1985  0
xt_state                1367  0
xt_tcpudp               2543  10
xt_multiport            1830  0
xt_LOG                  1423  0
nf_conntrack_ipv4      11616  3
nf_defrag_ipv4          1475  1 nf_conntrack_ipv4
nf_conntrack           62480  8 ip_vs,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4,nf_conntrack_ipv6
iptable_filter          1592  1
ip_tables              14092  3 iptable_filter,iptable_mangle,iptable_nat
x_tables               16302  19 ip6table_filter,xt_ipvs,xt_iprange,xt_mark,xt_recent,ip_tables,xt_tcpudp,ipt_MASQUERADE,xt_limit,xt_state,xt_conntrack,xt_LOG,xt_nat,xt_multiport,iptable_filter,xt_REDIRECT,iptable_mangle,ip6_tables,xt_addrtype
cifs                  372254  0
udf                    80226  0
isofs                  31403  0
loop                   19749  0
tcm_loop               12940  1
iscsi_target_mod      236522  1
target_core_ep         44622  2
target_core_multi_file    26766  1
target_core_file       41362  1
target_core_iblock     19769  1
target_core_mod       929914  18 target_core_iblock,target_core_multi_file,iscsi_target_mod,target_core_ep,target_core_file,tcm_loop
syno_extent_pool     1296536  0
rodsp_ep               76931  3 target_core_multi_file,syno_extent_pool,target_core_file
hid_generic             1321  0
usbhid                 26079  0
hid                    94408  2 hid_generic,usbhid
usblp                  10618  0
uhci_hcd               22683  0
ehci_pci                3999  0
ehci_hcd               42414  1 ehci_pci
apollolake_synobios    68252  0
ax88179_178a           15422  0
usbnet                 20745  1 ax88179_178a
tg3                   154417  0
cnic                   55581  0
bnx2                   74941  0
vmxnet3                42959  0
pcnet32                31986  0
e1000                 100121  0
sfc                   218790  0
netxen_nic             99003  0
qlge                   79767  0
qlcnic                265808  0
qla3xxx                37457  0
sky2                   48579  0
skge                   30856  0
jme                    34901  0
uio                     8037  1 cnic
alx                    28387  0
atl1c                  35074  0
atl1e                  28714  0
atl1                   31075  0
libphy                 23937  1 tg3
mii                     4035  5 jme,atl1,usbnet,pcnet32,ax88179_178a
exfat                 117655  0
btrfs                 956366  1
syscopyarea             3262  0
sysfillrect             3754  0
sysimgblt               2239  0
fb_sys_fops             1314  0
cfbfillrect             3818  0
cfbcopyarea             3326  0
cfbimgblt               2303  0
drm_panel_orientation_quirks     3601  0
iosf_mbi                4234  0
fb                     34563  0
fbdev                    966  1 fb
video                  25321  0
backlight               6096  1 video
button                  4756  0
synoacl_vfs            15727  1
hfsplus                92438  0
md4                     4337  0
hmac                    2961  0
r8168                 522467  0
ixgbe                 195514  0
igb                   173575  0
i2c_algo_bit            5328  1 sfc
e1000e                168333  0
vxlan                  32753  0
ip6_udp_tunnel          1903  1 vxlan
udp_tunnel              2355  1 vxlan
fuse                   85163  0
vfat                   10351  0
fat                    53904  1 vfat
crc32c_intel           12849  1
aesni_intel           157811  0
glue_helper             3893  1 aesni_intel
lrw                     3541  1 aesni_intel
gf128mul                5546  1 lrw
ablk_helper             1948  1 aesni_intel
arc4                    2040  0
cryptd                  7882  2 aesni_intel,ablk_helper
ecryptfs               78536  1 btrfs
sha256_generic         11993  0
ecb                     2113  0
aes_x86_64              7503  1 aesni_intel
authenc                 4076  0
des_generic            16861  0
ansi_cprng              3940  0
cts                     4136  0
md5                     2833  0
cbc                     2712  0
cpufreq_powersave       1126  0
cpufreq_performance     1130  4
acpi_cpufreq            6495  0
processor              23367  5 acpi_cpufreq
cpufreq_stats           2742  0
dm_snapshot            28295  0
dm_bufio               14214  1 dm_snapshot
crc_itu_t               1467  1 udf
crc_ccitt               1467  0
quota_v2                4047  0
quota_tree              7850  1 quota_v2
psnap                   1917  0
p8022                   1179  0
llc                     3569  4 stp,p8022,psnap,bridge
sit                    15812  0
tunnel4                 2261  1 sit
ip_tunnel              13200  1 sit
ipv6                  336006  77 sit,cnic,ip_vs,nf_defrag_ipv6,nf_conntrack_ipv6
zram                   19042  2
sg                     26457  0
etxhci_hcd             86330  0
rtc_cmos                9192  2
mdio                    3127  3 alx,sfc,ixgbe
mpt3sas               198135  0
raid_class              3572  1 mpt3sas
scsi_transport_sas     24739  1 mpt3sas
megaraid_sas          111352  0
megaraid               43585  0
mptctl                 26245  0
mptspi                 13124  0
mptscsih               18913  1 mptspi
mptbase                63234  3 mptctl,mptspi,mptscsih
scsi_transport_spi     19223  1 mptspi
megaraid_mbox          28928  0
megaraid_mm             7952  1 megaraid_mbox
vmw_pvscsi             15470  0
BusLogic               21973  0
usb_storage            49426  0
xhci_pci                4650  0
xhci_hcd              104955  1 xhci_pci
usbcore               198691  13 etxhci_hcd,usblp,uhci_hcd,usb_storage,ehci_hcd,ehci_pci,usbhid,usbnet,ax88179_178a,xhci_hcd,xhci_pci
usb_common              2222  1 usbcore
vttutfdwdp             19564  0

Tak na testowym żeby się z tym uporać, “XPENOLOGY_DELL” to nazwa jaką nadałem, a nie wersja systemu :stuck_out_tongue:

Zrób wg tego:

Musisz poszukac gdzie w Synology jest

to znaczy że się pobrało? tam na końcu jest coś nie tak?

sh-4.3# wget https://coral.googlesource.com/linux-imx/+archive/refs/heads/dkms/drivers/staging/gasket.tar.gz gasket.tar.gz
--2022-02-04 15:34:53--  https://coral.googlesource.com/linux-imx/+archive/refs/heads/dkms/drivers/staging/gasket.tar.gz
Resolving coral.googlesource.com... 64.233.163.82, 2a00:1450:4010:c06::52
Connecting to coral.googlesource.com|64.233.163.82|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: 'gasket.tar.gz.1'

gasket.tar.gz.1                         [ <=>                                                               ]  51.45K  --.-KB/s    in 0.004s

2022-02-04 15:34:54 (11.8 MB/s) - 'gasket.tar.gz.1' saved [52682]

--2022-02-04 15:34:54--  http://gasket.tar.gz/
Resolving gasket.tar.gz... failed: Name or service not known.
wget: unable to resolve host address 'gasket.tar.gz'
FINISHED --2022-02-04 15:34:54--
Total wall clock time: 0.8s
Downloaded: 1 files, 51K in 0.004s (11.8 MB/s)
sh-4.3#

To Twoj pobrany plik, jest OK, resztę pomiń.

Teraz tworzysz katalog mkdir <kernel location>/drivers/staging/gasket ale nie mam pojęcia gdzie to <kernel location> może być w tym systemie. To jest katalog w ktorym muszą być źródła kernela , poszukaj w /usr/src/. Katalog powinien sie nazywać linux-source, kernel-source. Pytanie czy takie coś można pobrać dla Synology z ich repozytorium.

Potem w Twoim przypadku:
tar -xf gasket.tar.gz.1 -C <kernel location>/drivers/staging/gasket

no właśnie szukam :slight_smile:

EDIT
a to na końcu
“Then build your kernel as you usually would and deploy it to your device.”
czyli co miałbym niby zrobić?

Myślę, ze bedzie trzeba zrobic inaczej: trzeba pobrac zrodla jadra linuxa z repozytorium :

cd /usr/src/
ls -l  - pokaz co pokazuje

potem 
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.4.59.tar.gz
mv linux-4.4.59.tar.gz linux-4.4.59.tgz
tar zxvf ./linux-4.4.59.tgz

nie mam src :frowning:

root@XPENOLOGY_DELL:/# cd /usr
root@XPENOLOGY_DELL:/usr# ls
bin  etc  lib  lib32  lib64  libexec  local  sbin  share  syno

to utworz sobie: mkdir /usr/src

Może ten artykuł coś podpowie:

https://hallard.me/how-to-install-kernel-modules-on-synology-ds1010-dsm-4-1/

Kolejny przykład:

Myślę, że właściwym katalogiem jest /usr/local

To jest najbardziej sensowne ale pytanie do @bartik22 jaką masz wersję DSM?

Katalog może byc dowolny ale przyjęlo się umieszczać zrodla kernela w /usr/src a wszyskie zrodła pobranych we wlasnym zakresie pakietów w /usr/local/src.

1 polubienie

DSM jest oryginalnym plikiem od synology
https://archive.synology.com/download/Os/DSM/6.2.3-25426

  • DSM_DS918+_25426.pat

no to zrobiłem i mam:

root@XPENOLOGY_DELL:/usr/src# ls
linux-4.4.59  linux-4.4.59.tgz