> Source: https://fiscallink.ro/documentation/known-errors
> Soluții pentru erorile frecvente în FiscalLink: parola de operator, conexiunea în fundal, permisiuni Bluetooth și utilizarea prin Parallels.

# Probleme cunoscute

## Shopify POS

### Parolă operator invalidă la emiterea bonului din Shopify POS

#### Problemă

La emiterea unui bon fiscal prin extensia FiscalLink din Shopify POS, casa de marcat respinge operația cu eroarea `operator password invalid` (parolă operator invalidă). Blocant pentru comerciantul afectat — nu se pot emite bonuri până când parola corespunde.

#### Cauză

FiscalLink nu poate citi parola operatorului din casa de marcat, așa că trimite întotdeauna parola fixă `0001` pentru operatorul 1. Dacă parola reală a operatorului 1 este diferită, fiecare tipărire eșuează.

#### Rezolvare

1.  Pe casa de marcat, deschide setările de operator/parolă (mod service sau programare, în funcție de model).
2.  Setează parola operatorului 1 la `0001`.
3.  Reîncearcă bonul din Shopify POS.

### Comenzile Shopify nu se mai încarcă când aplicația rulează în fundal

#### Problemă

O cerere Shopify GraphQL din `ShopifyController.GetShopifyOrder` eșuează cu `System.Net.WebException: Software caused connection abort` (excepție internă `Java.Net.SocketException`). Android închide socket-ul de rețea al aplicației în mijlocul cererii, iar preluarea comenzii nu se finalizează. Apare când aplicația este pusă în fundal (observat pe Xiaomi Redmi Pad SE, Android 15). Degradat, nu blocant — excepția este tratată.

#### Cauză

Optimizarea de baterie din Android (foarte agresivă pe Xiaomi/MIUI/HyperOS) suspendă aplicația când trece în fundal și îi închide conexiunile deschise. Este o problemă de setări ale dispozitivului, nu o eroare a aplicației, și nu poate fi rezolvată complet din cod.

#### Rezolvare

Căile de mai jos sunt pentru Xiaomi/MIUI/HyperOS; alți producători au echivalente în Setări → Aplicații → Baterie.

1.  Deschide Setări → Aplicații → Gestionează aplicațiile → FiscalLink.
2.  Setează **Economisire baterie** la **Fără restricții**.
3.  Activează **Pornire automată** (Autostart) pentru FiscalLink.
4.  Setări → Baterie → Optimizare baterie → FiscalLink → **Nu optimiza / Fără restricții**.
5.  În lista de aplicații recente, **blochează** aplicația FiscalLink (apasă lung pe card și atinge pictograma de lacăt) ca sistemul să nu o oprească la curățarea memoriei.
6.  Redeschide aplicația și reîncearcă acțiunea.

## Linux și Bluetooth

### Aplicația nu poate folosi Bluetooth sau serial pe Linux (erori de permisiune)

#### Problemă

Pe Linux, operațiile cu dispozitive eșuează cu erori de permisiune (`EPERM` / `EACCES` la deschiderea dispozitivului RFCOMM/serial, sau apeluri D-Bus către BlueZ respinse), deși Bluetooth funcționează pentru utilizatorul desktop din interfața sistemului. Apare pe instalări noi sau conturi noi unde utilizatorul nu a fost adăugat în grupurile de acces.

#### Cauză

Linux controlează accesul la dispozitive prin apartenența la grupuri: nodurile serial/RFCOMM (`/dev/rfcomm0`, `/dev/ttyUSB*`, `/dev/ttyACM*`) aparțin grupului `dialout`, iar politica D-Bus a BlueZ pe unele distribuții permite doar membrii grupului `bluetooth`. Un utilizator care nu e în aceste grupuri primește erori de permisiune pe care nicio aplicație nu le poate ocoli.

#### Rezolvare

1.  Verifică dacă grupurile există: `getent group dialout` și `getent group bluetooth`.
2.  Creează grupul lipsă, dacă e cazul (rar — `dialout` vine cu sistemul de bază, `bluetooth` cu pachetul `bluez`): `sudo groupadd dialout` / `sudo groupadd bluetooth`.
3.  Adaugă utilizatorul care rulează aplicația în ambele grupuri:

```
sudo usermod -aG dialout,bluetooth $USER
```

4.  Înlocuiește `$USER` cu numele contului real dacă configurezi alt utilizator (ex. contul operatorului POS).
5.  **Deloghează-te și reloghează-te** (sau repornește). Apartenența la grup se citește la autentificare — o sesiune deja pornită NU o preia. Pentru un test rapid în același shell: `newgrp dialout`.
6.  Repornește aplicația.

### Imprimanta Bluetooth nu poate fi conectată pe Linux rulat în Parallels

LMP timeout, deconectări repetate ale dongle-ului

#### Problemă

O imprimantă fiscală Datecs asociată (ex. WP-50MX) nu poate fi accesată prin Bluetooth din aplicația Linux. `sdptool browse <MAC>` expiră, `bluetoothctl connect <MAC>` eșuează cu `br-connection-page-timeout`, iar `btmon` arată `Connect Complete: Status: LMP Response Timeout (0x22)`. Apare pe Ubuntu rulat ca VM Parallels pe macOS, cu un dongle USB Bluetooth (ASUS USB-BT500 / Realtek RTL8761BU) atașat prin USB passthrough. Imprimanta funcționează de pe alte gazde. Blocant: fără conectivitate Bluetooth în acest mediu.

#### Cauză

Două cauze se suprapun:

-   **Descoperirea activă blochează paginarea.** Cât timp panoul Bluetooth GNOME e deschis, adaptorul rămâne în `Discovering: yes`. Bluetooth Classic nu poate face inquiry-scan și page simultan pe dongle-uri ieftine, așa că fiecare conectare expiră.
-   **Stratul USB virtual din Parallels resetează dongle-ul.** Controllerul xHCI virtual emite evenimente eronate; driverul strict `xhci_hcd` din Linux le tratează ca defecțiune și re-enumeră dongle-ul la câteva minute, întrerupând orice conectare. Pe Windows funcționează pentru că stiva USB tolerează aceste evenimente.

#### Rezolvare

1.  Închide panoul Bluetooth din GNOME și oprește scanarea: `bluetoothctl scan off`. Verifică `bluetoothctl show | grep Discovering` → trebuie `no`.
2.  Verifică dacă dongle-ul se deconectează: `sudo dmesg | grep -iE "usb.*disconnect|HC probably|RTL: loading"` — intrări repetate înseamnă strat USB instabil.
3.  În configurația VM-ului Parallels (cu VM-ul oprit), la Hardware → USB & Bluetooth:
    -   Dezactivează **„Share Bluetooth devices with Linux"**.
    -   Setează dongle-ul să se conecteze mereu la acest VM (nu „ask me").
    -   **Dezactivează USB 3.0** pentru VM, ca dongle-ul să folosească controllerul EHCI (USB 2.0) în locul xHCI virtual defect.
    -   Elimină dispozitivele partajate inutile (cameră Continuity/iPhone etc.) — Parallels resetează tot arborele USB virtual la evenimente de pe gazdă.
4.  Conectează dongle-ul **direct în Mac**, nu printr-un hub/adaptor USB-C multiport (limitat la putere, pierde dispozitive).
5.  Dezactivează autosuspend USB în guest, ca setarea să reziste la re-enumerare:

```
echo "options btusb enable_autosuspend=0" | sudo tee /etc/modprobe.d/btusb.conf
sudo udevadm control --reload
```

6.  Dacă `bluetooth.service` e oprit cu `start-limit-hit`: `sudo systemctl reset-failed bluetooth`, apoi `sudo systemctl start bluetooth`.
7.  Re-asociază imprimanta dacă bond-ul s-a pierdut — folosește panoul Bluetooth GNOME sau modul interactiv `bluetoothctl` (`agent on`, `default-agent`, `scan on/off`, `pair`, `trust`). NU folosi `bluetoothctl pair` one-shot (eșuează cu `AuthenticationTimeout`).
