SMB

SMB2

SMB3

CIFS

YNQ™ SMB Library For Embedded Devices

YNQ™

YNQ™ is the Visuality Systems Embedded SMB brand name that provides SMB Server and SMB Client solutions developed for non-Windows embedded systems to provide interoperability with Windows-based machines. YNQ™ file sharing enables multiple embedded devices to remotely browse each other's SMB shared folders and to read, write, edit, copy, delete and update each other's files. All operations executed without the need to transfer the entire file to/from the device's local disk or memory. 

At the initial launch in 1999, Visuality Systems SMB Embedded solution was brand named CIFS NQ and was subsequently renamed to NQE™ in 2014. YNQ™ is the new generation of the NQ product family, released in 2019 and developed under the Agile methodology.

You can download the white paper on YNQ™ here.

Whilst desktop computers and servers such as Windows and Macintosh natively benefit from SMB connectivity, the situation in the embedded world is more complicated. A device may be developed on top of Linux/Unix or on any other vast variety of RTOS's – such as VxWorks, ThreadX, Integrity, QNX, plus various Operating Systems, for example, IOS and Windows CE. Once hooked into a Windows network, a YNQ™ supported device gains visibility over the network, allowing users to perform file sharing functions.

Designed with the flexibility to integrate into virtually any environment, be it an operating system, a CPU or a compiler, YNQ™ fully complies with Microsoft SMB/SMB2/SMB3 specifications and supports the latest SMB dialects. From the very beginning in 1998 Visuality Systems and the Microsoft Corporation have held a close relationship ensuring customers that the Visuality SMB solutions will always be updated and current to market requirements.

Visuality Systems non-GPL SMB stack carries a small footprint in contrast to the open source Samba, and is up to date to meet the current market scenarios and requirements. The Visuality Systems Embedded SMB solutions are the most trusted name in the SMB commercial market with more than 90% of world market share. YNQ™ runs in millions of embedded devices such as scanners, printers, home routers, mobile devices, X-ray machines, automation devices, automotive, aerospace and defense and virtually any device that is required to perform full file sharing functions in a Microsoft Windows networking environment.

YNQ™ Products and Components

Being a modular library, the YNQ™ is composed of four separate products:

  1. Standalone Client – full SMB client functionality
  2. Corporate Client – full SMB client functionality with the ability to register the machine to the corporate Active Directory
  3. Standalone Server – full SMB server functionality
  4. Corporate Server – full SMB server functionality with the ability to register the server to the corporate Active Directory and has the pass-through authentication ability.

YNQ™ may be seen as an SMB Server, an SMB Client or NetBios Daemon.

YNQ™ Architecture Layers

YNQ™ is a part of modern software structure, divided into three levels of modularity:

  • High: API/Protocol level – APIs (NQ), server, client, NetBIOS
  • Medium: Service level – authentication, common, network
  • Low: OS level – system, user-defined, driver

Architecture LayersThe components in Level 1 and in Level 2 are system independent, while those in Level 3 may be modified during either Porting or Integration.

 YNQ™ is now available for integration. Acquiring the commercial, non-GPL, YNQ™ network stack off-the-shelf allows our customers to save time and money on expensive R&D, and stay focused on their core technology.

YNQ™ Applications

  • Scanners and MFPs
  • Routers and Gateways
  • TVs and Set Up Boxes
  • Cameras
  • Media players
  • Smart phones and tablets
  • Industrial robots
  • Aircrafts
  • Medical equipment

YNQ™ Markets

  • Consumer devices
  • Corporate
  • Medical
  • Industrial automation
  • Aerospace and defense
  • Smart devices

Target YNQ™ OS

  • VxWorks
  • Linux
  • Integrity
  • Windows
  • ThreadX
  • Nucleus
  • iOS
  • Android
  • Itron
  • QNX
  • Any OS on demand

YNQ™ highlights

  • Highly portable library to any platform
  • Hardware independent
    – runs on any processor
  • Small footprint
  • Fast performance
  • Highly customizable
  • The most complete CIFS / SMB implementation
    in the market
  • ANSI C source code

Compliance and Connectivity

YNQ™ fully complies with Microsoft SMB/SMB2/SMB3 specifications, supports all SMB dialects, from NTLM 0.12 to 3.1.1. This grants connectivity from all client versions of Microsoft, Apple Macintosh and Samba.

YNQ™ Code examples

Mount


// Mount remote share using credentials
udSetCredentials("userName", "password", "domain");
nqAddMountA("\\mountPoint", "\\\\192.168.19.1\\sharedFolder", 1);
 

Open, read, write and delete file


// Mount remote share using credentials
udSetCredentials("userName", "password", "domain");
nqAddMountA("\\mountPoint", "\\\\192.168.19.1\\sharedFolder", 1);    
// Create a file on a remote share
NQ_HANDLE fileHandle = ccCreateFileA("\\mountPoint\\file.txt",
                                FILE_AM_WRITE,
                                FILE_SM_EXCLUSIVE,
                                FILE_LCL_UNKNOWN,
                                FALSE,
                                0,
                                FILE_CA_CREATE,
                                FILE_OA_FAIL
                                );
NQ_BYTE data[DATA_SIZE];
NQ_UINT dataSize = DATA_SIZE;
NQ_UINT writtenSize, readSize;
// Write to remote file 
ccWriteFile(fileHandle, data, dataSize, &writtenSize);
// Read from a remote file 
ccReadFile(fileHandle, data, dataSize, &readSize);
// Close file handle 
ccCloseHandle(fileHandle);
// Delete a file on a remote share
ccDeleteFileA("\\mountPoint\\file.txt");
 

Delete file by name


// Mount remote share using credentials
udSetCredentials("userName", "password", "domain");
nqAddMountA("\\mountPoint", "\\\\192.168.19.1\\sharedFolder", 1);
// Delete a file on a remote share
ccDeleteFileA("\\mountPoint\\file.txt");
 

Browsing directory


// Mount remote share using credentials
udSetCredentials("userName", "password", "domain");
nqAddMountA("\\mountPoint", "\\\\192.168.19.1\\sharedFolder", 1);    
// Open a directory on remote share
FindFileDataA_t fileData;
NQ_HANDLE dirHandle = ccFindFirstFileA("\\\\192.168. 19.1\\sharedFolder\\*", &fileData, 0);
if (dirHandle != NULL)
{
    // Get next file in the directory
    while (ccFindNextFileA(dirHandle, &fileData))
    {
        printf("Filename: %s, fileSize:%u \n", fileData.fileName, fileData.allocationSizeLow);
    }
    // Close directory handle
    ccFindClose(dirHandle);
}
 

Visuality Systems developed a Java based product. JCIFS is a Java SMB solution that support SMB1 with no further support in SMB2 or SMB3 protocols. JCIFS latest update was in 2014 and therefore the Visuality Systems SMB code written in Java is a good alternative for the open source JCIFS.

Follow Us

News

  October 31, 2019

Visuality Systems has released YNQ™ 1.2.0 for enhanced compatibility with the new Windows API standards introduced in Windows 10 Build 1903.

 August  8, 2019

Visuality Systems has released YNQ™ 1.1.0 adding the option to disable SMB1 by demand plus adding the WS-Discovery functionality which replaces utilization of the Microsoft SMB1 Browser on the SMB Client product. Additionally MTU support (multi-credits) was added to the SMB server product. 

 

 August  2, 2019

Visuality Systems has released jNQ™ 1.1.0 adding WS-Discovery for enumerating servers functionality which replaces utilization of the Microsoft SMB1 Browser as well as security features and performance improvements to SMB3.1.1

 

May 06, 2019

Visuality Systems has announced the release of the new generation Embedded NQ product - YNQ™. Developed under Agile methodology YNQ™ offers customers a shorter time to market with an upgraded modular design allowing for straight-forward integration to any embedded device.

 

 March 08, 2019

Visuality Systems Visuality Systems announces the release of jNQ™ 1.0.2-br-5.  This version includes a number of new features: internal packet capture including IPv6, DNS and Netbios traffic, an enhanced mount command, and an enhanced directory lookup with pattern matching. In addition, many bugs have been fixed.

 

 November 26, 2018

Visuality Systems announces the transition to the Agile Development System which part of the many advantages include delivery of fully tested Visuality updates in a very short time cycle. Furthermore, Visuality Systems has established an online Help Desk that offers a simple and efficient customer interaction with the Visuality Systems technical support team

Helpdesk Registration

 

 November 06, 2018

Visuality Systems will be a sponsor at the SDC EMEA conference to be held at the Sheraton hotel, Tel-Aviv, Israel on January 30. The event will be co-located with an SMB3 testing Plugfest held on January 28-31.

See Link