Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This library tries to provide an open source interface to the rfid reader mir:ror by violet. This is only tested on linux. Maybe it works on other Unixes (FreeBSD, OSX, etc.) too.

Sample input:

Mifare-type rfid (used in some cafeteria / library cards)
02 01 00 00 04 72 9c 0b 90
nano:ztag
02 02 00 00 08 d0 02 1a 03 52 d0 2a af

Protocol:

 ------- payload ------
| | | | | | | |
-- payload size
|
02 02 00 00 08 d0 02 1a 03 52 d0 2a af
^
-- opening flag
^
-- direction (01 for arriving at the reader / 02 for leaving the reader)
^ ^
------ padding or additional payload size information

This is rather a rough scretch than a working interface.

To use this, you have to

After connecting your mir:ror you can find the device via dmesg:

$ dmesg
...
hiddev96hidraw3: USB HID v1.00 Device [Violet Mirror] on usb-0000:00:0b.1-1.3

this points to

$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw---- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

To access the interface you have to make it world-readable:

$ sudo chmod o+r /dev/hidraw3
$ ls /dev/hidraw*
crw-rw---- 1 root root 252, 0 2009-02-15 22:02 /dev/hidraw0
crw-rw---- 1 root root 252, 1 2009-02-15 22:02 /dev/hidraw1
crw-rw---- 1 root root 252, 2 2009-02-15 22:02 /dev/hidraw2
crw-rw-r-- 1 root root 252, 3 2009-03-25 22:14 /dev/hidraw3 <----

You’ll have to repeat this each time you plug the mir:ror in.

Change /dev/hidraw3 to your device in bin/ruby-mirror.rb

$ ruby bin/ruby_mirror.rb examples/bunny.mir
oneiros' green bunny is in the house.
oneiros' green bunny has left the building.
hey d0021a053b4d20c3 stranger, never seen you before

Mir:ror ID

$ sudo lsusb -d 1da8:1301 -v
Bus 001 Device 010: ID 1da8:1301 Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64
idVendor 0x1da8 idProduct 0x1301 bcdDevice 1.00
iManufacturer 4 Violet
iProduct 18 Mirror
iSerial 32 4310FFFF <----
bNumConfigurations 1

which corresponds to the violets mir:ror id FFFF0134

If you can provide code or information regarding the mir:ror or the ztamps please contact me.

See COPYING for legal information. It’s an MIT license, which lets you do anything you want with this.

About

A ruby library for reading rfid tags with violets mir:ror

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages