A user connected a Keystone air-gapped hardware wallet to their computer via a browser extension, opened Rabby Wallet to approve a transaction, and was immediately presented with a QR code. After holding the Keystone device’s camera up to the screen, the approval succeeded—but only on the third attempt. The first two scans triggered error messages: “QR code not recognized” or “partial frame detected.” The user was not alone. This pattern repeats across forums and documentation: Keystone devices operating in air-gapped mode require multiple scan retries when signing through Rabby, introducing friction at the exact moment when transaction approval should be straightforward.
The root cause is not Rabby’s design or Keystone’s firmware, but the interaction between the QR encoding scheme, camera focus distance, lighting conditions, and device positioning. Understanding why this happens, and how to reduce failed scans from three attempts to one, matters because the approval step is where users make the critical decision to sign. Repeated failures erode confidence, encourage hurried decisions, and can lead to approving the wrong transaction out of frustration. A successful rabby wallet download and setup is only the start; the next challenge is ensuring that hardware wallet integration works reliably under real-world conditions.

Why Keystone uses QR codes and what that means for your signing flow
Keystone is an air-gapped hardware wallet, meaning it never connects directly to the internet or to a computer’s USB port. Instead, all communication happens through QR codes: the computer displays a QR-encoded transaction or message, and the Keystone device’s camera scans it. Once approved on the Keystone screen, a new QR code is generated and displayed on the Keystone—which the computer then scans back to retrieve the signed transaction. This design creates a deliberate isolation boundary, preventing malware, network attacks, or compromised USB drivers from directly accessing the device’s private keys.
Rabby Wallet, developed by the DeBank team and available for rabby wallet download as a browser extension, supports hardware wallets including Keystone, Ledger, Trezor, OneKey, GridPlus, and BitBox02. When Rabby detects a Keystone connection, it switches to QR-based signing: instead of requesting a USB confirmation, it encodes the transaction data into a large QR code and displays it on the screen. The user then holds the Keystone device’s camera up to scan it. The camera on Keystone devices is not a high-resolution smartphone camera; it is optimized for range and focus accuracy in low-light conditions, but it can be sensitive to angle, distance, and frame composition.
The QR code Rabby generates can be quite large and densely encoded, especially for complex transactions that include calldata, multiple approvals, or permit signatures. A large QR code means more data packed into a smaller space, which increases the demands on the camera’s ability to read individual modules. If the camera is slightly out of focus, the angle is shallow, or light reflects off the screen, the error rate rises. Unlike a simple barcode reader that only needs to identify a few black-and-white stripes, a QR scanner must correctly read thousands of individual cells. Even one misread cell in a critical section of the QR code can cause the entire scan to fail.
The physical mechanics of QR scanning at close range
The Keystone’s camera is positioned on the back of the device and has a relatively fixed focus distance, typically optimized for holding the device 10–15 cm (4–6 inches) from a screen or paper. When holding it closer or farther away, the image can fall outside the optimal focus plane. Distance is not the only variable. The angle between the camera lens and the QR code matters significantly. If the phone or display is tilted away from the camera, the QR pattern appears distorted from the camera’s perspective, and the decoder has to work harder to correct for the perspective transformation.
Lighting is the third critical factor. A bright monitor in a dark room creates extreme contrast, which can actually make scanning harder—the camera’s automatic exposure compensation may darken the screen-white areas to compensate for overall brightness, darkening the QR code in the process. Conversely, light reflecting off the screen (glare from a window or room lamp) can wash out contrast in parts of the QR code, creating dead zones where the camera cannot read the data reliably. The Keystone’s camera has some automatic gain and exposure control, but it is not optimized for scanning a light-emitting screen; it was designed for scanning printed or photographed QR codes where ambient light is more diffuse.
The QR code size in Rabby also matters. Larger QR codes are more robust to distance and angle variations because the individual cells are larger and easier for the camera to resolve. Smaller QR codes pack more data into fewer cells, making each cell more critical and more vulnerable to noise. Rabby does not reduce the QR code size unless you are generating a particularly simple transaction; complex token approvals, bridges, or swaps tend to produce large, dense codes that are harder to scan on the first attempt.
How transaction complexity affects QR scan success rates
Not every transaction encodes to the same QR code size. A simple ETH transfer might produce a small, easily scannable QR code. An approval for a token swap with multiple conditions, a permit signature, or a bridge that requires cross-chain data encoding can produce a much larger code. The EIP-55 checksum standards and EIP-191 signing standards define how transaction data is formatted before encoding, but the total data length depends on the transaction’s complexity. Permit and Permit2 signatures, which rabby wallet download decodes and displays before signing, add extra data to the QR payload.
A user approving a token transfer through a decentralized exchange approval workflow might see a QR code that requires a permit signature—a cryptographic signature that allows the swap contract to spend the token on the user’s behalf without a separate on-chain approval. The permit data is encoded into the QR code alongside the transaction details, increasing the overall size and complexity. The Keystone camera must read all of it, and if any part is misread, the entire code is rejected.
Bridges and cross-chain swaps in Rabby are also QR-intensive. When you move assets across multiple EVM chains—Ethereum to Polygon, Arbitrum to Optimism—Rabby encodes routing information, bridge contract details, and destination chain data into the QR code. A bridge transaction can be significantly more complex than a simple swap, resulting in a denser QR code and a higher likelihood that camera angle or lighting will cause a scan failure on the first or second attempt.
Practical fixes for consistent Keystone scanning with Rabby
The following adjustments reduce scan failures from multiple retries to usually one attempt. First, ensure the screen brightness is set to 75–100 percent. A dim screen makes the QR code harder to read; maximum brightness creates better contrast for the camera. Second, reduce ambient light reflection. If there is a lamp or window reflecting off the screen, reposition slightly or dim the reflected light. A small amount of diffuse light is better than direct glare.
Third, hold the Keystone device perpendicular to the screen, not at an angle. The camera lens should face directly toward the QR code, not from a shallow angle. If the code is on a laptop screen, position the laptop screen at eye level or slightly below rather than tilted backward. This ensures the camera is looking straight at the code, minimizing perspective distortion.
Fourth, maintain consistent distance: roughly 10–12 cm (4–5 inches) from the screen. Too close and the camera may not achieve focus; too far and the individual QR cells become harder to resolve. You should be able to see the entire QR code in the Keystone’s screen preview (if visible) or judge by the size of the code on the display relative to the Keystone’s back.
Fifth, move slowly and smoothly. If you quickly shake the device side to side or tilt it, the camera may capture a blurred or partially-focused frame. A slow, steady approach usually allows the camera’s autofocus to settle. Pause for a fraction of a second once the device is positioned, then let the camera complete the read.
Sixth, if you see a partial frame error or timeout, pull the device back slightly before attempting again. Sometimes the code was being captured at the very edge of the focus range, and a small adjustment improves focus without significantly changing the distance.
When to suspect a different problem: Rabby troubleshooting and setup
Occasional scan failures—one retry out of every five transactions—are normal and do not indicate a deeper problem. However, if you consistently fail to scan the same transaction after five or more attempts, or if the Keystone device itself is producing error messages unrelated to QR recognition, the issue may not be physical positioning.
First, confirm that your Keystone firmware is up to date. Firmware updates often improve camera performance and QR decoding accuracy. Visit the Keystone companion app or official Keystone documentation to check and update if necessary. Second, ensure that Rabby itself is current. An outdated version of Rabby may generate QR codes using an inefficient encoding, whereas newer versions optimize for size and readability. Open your browser extension settings and check for Rabby updates, or visit the official download page if you are updating from an older rabby wallet download.
Third, test with a simpler transaction. Approve a small token transfer or a basic ETH swap rather than a complex multi-chain operation. If simple transactions scan consistently but complex ones fail repeatedly, the issue is QR code size and density, not the hardware or software. In that case, you may want to break complex operations into multiple smaller transactions or contact DeBank support to report the specific transaction type causing issues.
Fourth, if the Keystone device is displaying an error message before the camera even attempts to scan (such as “invalid request format” or “device version incompatible”), the problem is not physical positioning. This suggests a compatibility issue between your Keystone model, firmware version, and Rabby version. Hardware wallet support varies; some older Keystone models may not support certain transaction types that newer versions of Rabby generate. Check the Keystone documentation for supported transaction formats and confirm that you are running a compatible version of both Keystone firmware and Rabby.
Hardware wallet support across Rabby and alternatives
Rabby’s hardware wallet support includes Keystone, Ledger, Trezor, OneKey, GridPlus, and BitBox02. Each integrates differently. Ledger hardware wallets typically use USB-HID or Bluetooth connections when available, reducing reliance on QR codes and allowing Rabby to communicate directly with the device. Trezor devices similarly support direct connection, though QR-based signing is also available as an option. Keystone is unique in the Rabby ecosystem because QR-based signing is its only connection method—there is no USB or Bluetooth fallback.
This distinction matters for understanding where the friction point actually lies. The repeated scan failures are not a limitation of Rabby but an inherent characteristic of how air-gapped devices communicate. Rabby handles the signing flow correctly; the challenge is the camera’s ability to reliably read a dense QR code from a lit screen under variable lighting conditions. Other air-gapped wallet models would face the same issue. Conversely, if you use a Ledger or Trezor connected via USB or Bluetooth, you avoid QR scanning entirely, and the approval happens on the device’s screen without any intermediate scan step.
For users who prioritize air-gapped security and are willing to tolerate QR scanning friction, Keystone remains a valid choice. The isolation it provides—no network connection, no USB exposure, cryptographic signing only visible on the device—is a genuine security benefit. The scan retry problem is annoying but manageable with proper technique. For users who want the ease of a direct connection without the air-gapped isolation, Ledger and Trezor are better-integrated options in the Rabby ecosystem.
Risk management: What to confirm before signing any Rabby transaction
The frustration of multiple scan retries can lead to a dangerous habit: approving a transaction without fully reading it on the Keystone device’s screen. This is when mistakes happen. Before scanning the QR code—and especially on the first attempt, before you are frustrated by a retry—pause and verify the following details directly on the Keystone display: the destination address (using address checksum standards to ensure accuracy), the amount being approved, the token type, and any conditions or permits associated with the transaction.
Rabby provides transaction simulation with risk alerts before you even see the QR code, showing what will happen on-chain if you approve. Read that simulation carefully. It will tell you if you are about to approve a swap that looks unfavorable, if a contract interaction might interact with your holdings unexpectedly, or if the destination address belongs to a known phishing contract. These alerts are valuable precisely because they catch mistakes before the signing step.
After the Keystone scan succeeds and you see the signed transaction in Rabby, do not immediately click “send” if something feels off. Verify the transaction hash or destination one more time, especially if you had to retry the scan multiple times. The extra two seconds of verification, while a transaction sits in your wallet ready to be broadcast, can prevent serious mistakes. A Rabby setup is only secure if it remains usable enough that you will actually follow the verification steps under pressure.
Rabby also includes token approval management, allowing you to revoke permissions from contracts that no longer need access to your tokens. Regularly reviewing and revoking approvals reduces the blast radius if a contract is compromised or if you no longer use a service. This is not specific to Keystone integration but is a broader Rabby safety practice that applies to all users.
Frequently asked questions
Why does my Keystone device keep failing to scan QR codes in Rabby?
QR scanning failure is usually caused by distance (too close or too far), angle (camera not perpendicular to the screen), or lighting (screen too dim or glare on the surface). Ensure screen brightness is 75–100 percent, position the Keystone camera straight at the code from 10–12 cm away, and avoid reflections. Complex transactions produce larger QR codes that are harder to scan; simple retries with better positioning typically succeed. If failures persist across many transactions, update both Keystone firmware and Rabby to the latest versions.
Is Rabby wallet download compatible with Ledger and Trezor in the same way as Keystone?
No. Ledger and Trezor support direct USB or Bluetooth connections to Rabby, eliminating QR code scanning entirely. Approval happens on the hardware device’s screen without any intermediate camera step. Keystone, being an air-gapped device, only communicates via QR codes, which introduces the scanning friction. All three are supported in Rabby, but the integration method differs based on each device’s design.
What should I check before approving a Rabby transaction on my Keystone?
Before scanning, read the transaction simulation in Rabby to check for risk alerts. After scanning succeeds, verify the destination address (using checksum accuracy), token amount, and token type on the Keystone device’s screen. Do not rush approval if you had to retry the scan multiple times; take the extra moment to confirm the details match what you intended. Rabby’s transaction simulation and approval decoding are designed to catch mistakes before signing.
Leave a Reply