Recently, Microsoft published an update which broke .NET 3.5 applications across the globe (April 25, 2022-KB5012159 Cumulative Update Preview for .NET Framework 3.5 and 4.8 for Windows 11). Many Crestron professionals were also affected in their ability to continue supporting the 3-series platform due to a plugin that indirectly has a dependency on the .NET 3.5 framework.

In our efforts to test and troubleshoot this issue to identify a cause, we found that it came down to an issue in the old GAC. The following assembly could not be resolved by some applications because this assembly was no longer in the GAC located at %WINDIR%\assembly:

System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

The fix was quite simple… Fixing the .NET 3.5 installation through the “Turn Windows features on or off” feature provided by Microsoft.

  1. Open the “Turn Windows features on or off” dialog by searching for it in the start menu and uncheck the box for “.NET Framework 3.5 (includes .NET 2.0 and 3.0)”
  2. Restart windows to ensure that any pending operations for its removal are complete
  3. Sign into Windows.
  4. Open the “Turn Windows features on or off” dialog again by searching for it in the start menu and check the box for “.NET Framework 3.5 (includes .NET 2.0 and 3.0)” opting in to redownload all the necessary files from Windows Update.
  5. Restart Windows one last time to ensure any pending operations have completed successfully.

After fixing the .NET installation, and verifying through an older version of Visual Studio Developer command prompt via gacutil.exe that the entry for System.Runtime.Serialization once again exists in the old GAC, we were good to go! You can also navigate to the old GAC to verify that the entry exists, instead of using an older version of gacutil.exe.

Note: The GAC exists in two separate locations. One of which, was introduced at the time .NET 4.0 came out and is located at %WINDIR%\Microsoft.NET\assembly. The new GAC location is not relevant and cannot be used to verify that the missing assembly has been added to the GAC.

“A highlights important information, which may or may not be an actual quote. It uses distinct styling to set it apart from other content on the page.

A Modern Crestron Programming Strategy

A large majority of end-users and businesses understand the pace at which technology advances in the modern world. As a Crestron Service Provider, we often have to be more pragmatic regarding the efficacy of programming strategies underlying our business processes. I would argue, that the primary goal should be to maximize value. This ensures that the decisions being made are optimized to reduce senseless changes that add little or no value to the business or your customers. Beneficial decisions will naturally follow with such a mindset.

SIMPL# Pro is one such technology that can add unparalleled value to your control system solutions. To many Crestron programmers with their adolescent knowledge of the Microsoft C# language, it seems unfamiliar and peculiar. This stems from the fact that many programmers were never required to learn C# programming in the past. Consequently, some programmers dismiss the idea entirely; a mistake that can lead to a myriad of lost opportunities. As a zealous C# programmer having an award from Microsoft on the topic, I believe I have enough credibility to suggest a case for both sides. Let’s discuss the disadvantages first, following a list of advantages.

Note: “SIMPL#” is a Crestron term for their programming solution that utilizes the Microsoft C# programming language. SIMPL# Pro allows Crestron programmers to write control system programs entirely in C#.

Disadvantages:

  1. SIMPL# Pro is more difficult to learn, in which the learning curve of both SIMPL Windows and SIMPL+ pales by comparison.
  2. SIMPL# Pro library documentation is still a work in process. (This makes many things a journey of trial and error, which can be added complexity for someone who is trying to learn the C# language at the same time. The libraries themselves also do not come without their quirks.)

Advantages:

  1. SIMPL# Libraries can be used to extend the functionality of a program written in SIMPL Windows, but not without limitations. (i.e. Types have to be “translated” to SIMPL+ compatible ones which can reduce the versatility of the underlying functionality, the SIMPL+ cross compiler contains bugs, etc.) This leads to an implied benefit in having everything encapsulated within the SIMPL# Pro environment, without having to adapt the information to comply with the limited boundaries of SIMPL+.
  2. You can create hardware at runtime dynamically. (In comparison to SIMPL Windows programs, where you have to hardcode the combined hardware definitions before compilation, regardless of whether you’re remapping devices or not.)
  3. The controller definition is entirely dynamic. What I mean, is that you can write a single program that is designed to support a DMPS of any type, or even have a program that can support a CP4 and a PRO4 simultaneously.
  4. C# source code allows you to utilize source control the way it was intended to be used. (SIMPL Windows files that define the symbols and signals within a program aren’t managed by the programmer directly, making diffs completely useless.)
  5. The C# language allows you to represent data without restricting you to a maximum of 16-bit integers. You can use primitive types that hold 64-bit values, and even use classes that can support much larger such as BigInteger. It also gives you the ability to use IEEE 754 floating point datatypes such as float and double, as well as the decimal type when you need greater precision.
  6. Being able to use IDE’s like Visual Studio or JetBrains Rider gives you the ability to be vastly more efficient with your workflow. These tools are used by millions of developers around the world, and are fine tuned to accommodate many different use cases and features.
  7. The ability to use a fully fledged CI/CD pipeline to automate build and deployment processes for agile software development is invaluable. We now have far more capabilities in the context of improving testability as well, with unit tests that can also be automated. (Note: This is made even easier with the 4-series platform, which relies on the Mono runtime.)
  8. Reusability is often an overlooked benefit, in the shadow of change that many old school Crestron programmers have a distaste for. The gates are now nearly wide open for programmers to use virtually any open-source .NET library they want, as long as they comply with any applicable license agreements. Abstract C# code when written properly, is also inherently more reusable than code written in SIMPL Windows due to the nature of true polymorphism.
  9. You can also create extremely useful console commands for a multitude of purposes. Unlike with user program commands in SIMPL Windows, inside of a SIMPL# Pro application, you have access to any part of the program memory in terms of “state.” In SIMPL Windows, that state is isolated between each symbol, unless you’ve created signal ties between symbols, or you’ve created a SIMPL# library that allows you to share memory between instances of an object that only those symbols use.

From a business perspective, it may be difficult to transition to SIMPL# Pro initially. Although, I suspect many will be forced to make the leap within the next few years, with the slow but obvious transition towards more open technology. With the advent of HTML5 and JavaScript inside the Crestron ecosystem, there may even come a point when SIMPL Windows and SIMPL+ are no longer viable solutions. Even if they are still remain available options in the future, I sure wouldn’t want to be the one bringing a knife to a gunfight!

To learn more about SIMPL#, we have developed a popular SIMPL# Fundamentals course that allows people to get their foot in the door. The course has proven to be a valuable resource for Crestron Dealers and CSP’s, regardless of whether their programming staff has beginner or intermediate knowledge on the subject. This course can be found here: https://www.tbdenterprises.ca/product/simplsharp-fundamentals-course. In the next couple months, we also hope to be unveiling a brand new course that focuses exclusively on SIMPL# Pro. Our goal is to leverage our extensive knowledge of the C# language to fill in the gaps for those who still find this technology confusing in the context of Crestron control systems.

Are you maximizing efficiency in your workplace?

 

A ubiquitous goal among every business is to reduce unnecessary costs to maximize profit margins, like a balance scale of sorts. Successfully making progress regarding cost reduction, can lead to greater opportunities and greater potential. Having the ability to reinvest more money back into the business to provide a better workplace for your employees, and better goods and services for your customers, is quintessential to a company’s’ growth. With 2020 being a challenging year for many to say the least, it is almost fully underway and 2021 is finally around the corner. The New Year is a time for many individuals and companies to reflect on the past year to plan for success in the following year.

Reflecting on how your company conducts meetings, I want you to ask yourself a few questions:

  1. Have your meetings added enough value to your business in the past? (If the answer is no, what could be done better?)
  2. Were there any technical challenges? How much productivity was lost as a result?
  3. How much time are you spending on organizing, or preparing meetings?
  4. With the new COVID-19 era, what safety precautions have you determined to be a best fit for your business operations to proceed with less concerns around health and safety?

There are many issues with the way most meetings are run. Opening up the discussion to determine what problems your business is facing, becomes the first step towards a solution.

Studies at Harvard University have shown that the most successful meetings consist of smaller groups; typically between 5 to 8 people. Meeting organizers are sometimes unsure on who should be on the invite list. However, as with emails, this typically ends up with everyone being invited as a precautionary measure, leading to some inadvertent consequences. The problem, is that larger meetings tend to suffer from less collaboration and engagement, since larger groups are consequentially less “personal” than meetings consisting of smaller groups. A downward spiral can ensue, causing your attendees to take meetings less seriously, influencing them to be less prepared, and meetings can habitually drag on. Aside from re-educating the organizers to figure out who the key stakeholders are that should be in a given meeting, another strategy would be to make it easier for the organizer to create and finalize a scheduled meeting; allowing them to focus on forming a productive meeting. There are many technological solutions that can solve this problem, with the added benefits of simplicity, uniformity, standardization, as well as increased efficiency and health safety. Control system applications can be configured for room scheduling, availability, and even make ad-hoc meetings easier to organize more immediately.

Technical challenges can also be solved by integrating a well-planned control system solution; making difficult and/or menial/repetitive tasks a breeze! Psychologically, the brain fundamentally operates significantly better with a positive state of mind and less distractions. Don’t let technical difficulties alter the capacity of which your employees are conducting business operations.

Meetings are usually a critical part of any key business decision making process. If a meeting takes 10 or 15 minutes to set up, a substantial amount of time and productivity is being wasted. If you could buy that time back, it becomes a no-brainer when considering the aggregated measurement of productivity lost over the span of even just a single calendar year. Control system automation can be fine tuned for standard meeting rooms to ensure that the meeting is ready to go by the time the first participant shows up. Resources to train staff on how to use meeting rooms can also become less necessary, especially when the user experience can be standardized across an entire building. Simplicity adds great value in terms of efficiency, and your employees won’t lose their train of thought for the meeting agenda, due to meeting preparation.

Working from home

As COVID-19 took the world by storm, and opened many eyes, there became many new requirements to consider. One such consideration, is how to ensure that the digital workplace imposes less of a health risk to key stakeholders within a business? The workplace quickly transformed into variations, ranging from entirely remote operations, to hybrid meeting spaces, and even “touchless” solutions to reduce human to human germ transmission. Once infrastructure is in place, and security implications have been addressed, the cost savings of having the ability to collaborate remotely simply cannot be ignored. Technology, being the cornerstone of nearly every possible solution to these problems, has since been adopted by many organizations across the globe. Revisiting efficiency in the context of number of meeting participants, and in addition to controlling capacity, solutions which leverage machine learning can be deployed. A number of camera manufacturers now provide capabilities for people counting, which can be used to collect data for reasons regarding health and safety, compliance, and a myriad of other reasons. In a world where data is king, you’ll want to be sure that the data is there when you want to review it in the future. Without data, making smart decisions that can impact business operations becomes nearly impossible.

If your business is struggling to find the right solution that fits your operating requirements and key needs, don’t hesitate to reach out for assistance! We believe that it isn’t worth the headache and cost implications of not making improvements in these areas, or attempting to solve it by trial and error. Don’t hesitate to reach out to one of our experienced team members if you’d like to learn about how we can help you improve your business’ collaboration workflow. Our goal is to help you attain peace of mind while having the ability to focus on other areas of your business that require more urgent attention.

 

Video Conferencing &

The “New” Normal

 

We live in a world full of technology, challenged by the need to keep up with change and innovation. Many business operations have been forced to
re-evaluate their internal processes to align within the margins of government regulations. Some companies are even creating their own additional protocols to help keep their employees healthy. Now, more than ever, integrators have an important role to play in reshaping how end users interact with their technology. Amongst these new set of responsibilities, a shared goal has been born; to deliver an optimal solution that allows business operations to proceed as “normal” with minimal limitations.

How are you bringing forth valuable solutions that your clients can benefit from? What considerations and discussions are you having with your clients? What are the discovered commonalities? All of these are good questions to contemplate when considering how you can provide the best possible solution for any particular client.

The goal of Simplicity

Once you’ve identified a few of the main issues, the next step is to simplify and make things intuitive for common system functionality. A solid foundation of understanding regarding how your client might use the system, must be formulated in order to achieve this. (A good UI/UX should be easy to understand and use correctly with minimal training; and hard to use incorrectly.) Automated functions have become an obvious approach to creating a more “touchless” experience. Automated functionality should be logically intentional within this context, in order to maintain ease of use.

“We can’t hear you, You’re On mute”

Most high-end DSP equipment allows for monitoring audio signals as they transition from the inputs to the output channels. One potential solution here to help mitigate problems like these, is to monitor the input signal before a controlled mute point. This would allow you to analyze and compare frequencies within the normal voice range against a threshold level. You can then trigger notifications that remind the user to unmute themselves when the system “thinks” someone is trying to speak while they are on mute. Although it may be a small subset of the overall system functionality, we find many of our clients appreciate our meticulous approach to improving the user experience.

Room Occupancy

Most meetings are scheduled through enterprise solutions such as Microsoft Exchange, Office 365, Google Calendar, etc. Monitoring room occupancy with sensors, people counting cameras, and automating tasks based on the data these devices provide, can have many benefits. The first is an implied cost reduction, due to increased meeting efficiency (i.e. less time wasted in getting a meeting up and running). It also helps to relieve on-site support from having to deal with issues. leading to a less populated spaces in an office environment. Room occupancy also allows people to find available rooms for ad-hoc meetings more immediately; resulting in some of the same presumed benefits in terms of public health and safety.

Touchscreens are a great place for germs and bacteria to collect. During the day when the cleaning staff isn’t able to readily access meeting rooms, simplification and automation strategies can help reduce quantitative direct contact with the devices. 

Touchless Solutions

Wireless presentation systems are equally becoming more common; as are mobile solutions for system control. In corporate environments where employee WiFi access points have been provisioned, users may optionally have the ability to interact with systems through a web front-end. This would allow for less cross-pollination of surface germs to transfer from person to person within any particular meeting space in a BYOD (Bring Your Own Device) configuration. Wireless presentation solutions that don’t involve sharing a common USB or network “dongle” has the same inherent benefits.

Larger meeting spaces may have different requirements to create a more personable experience. On a video call where a single camera captures a full table, participants may be hard to distinguish on the far end of the call. With more people being allowed to work from home, viewing participants in a large boardroom on a small computer monitor during a video call might be difficult. Solutions that allow a camera to automatically track and zoom in on active speakers can not only help improve user engagement; they can reduce manual interaction with a control surface to point the camera where it’s needed.

 

MasterInstaller 3.03.00 – Software Bug

Issues with software can be a time killer, and sometimes very distracting from the task at hand. We’ve known about a small bug in the MasterInstaller software for a few months now. This information has been disclosed to Crestron in hopes that they would fix it at some point in the near future in much more detail.

Case scenario: You just get off a call with tech support after being instructed to update your software to the latest database version(s). To save some time, you quickly open up MasterInstaller, select the items you want to install, hit “Next” a few times, accept the terms, then hit the “Download and Install” button only to have the program exit on you without warning.

The installer has a bug with a buffer overrun on the stack which causes stack corruption, prompting the application to exit from a __fastfail() call. If you’ve uninstalled or installed some software recently (and perhaps you haven’t rebooted your PC in some time,) you may run into this issue! In short, if the PendingFileRenameOperations registry key contains more than 5000 bytes of data, you won’t be able to use MasterInstaller to download and install or update Crestron software. This registry value is typically cleared after a Windows system restart however, and it is a good thing to keep this in mind next time you encounter a crash while trying to update your Crestron software.

Below is a video demonstrating the bug, along with some further details in the video description.

**DISCLAIMER**: This video is for informational and educational purposes only! DO NOT edit the registry or you run the risk of potentially messing something up on your Windows machine, otherwise do so after you understand and acknowledge all of the risks involved.
Documentation for PendingFileRenameOperations registry value can be found in the Remarks section below:
Version: 3.03.00
[ No further updates to the software as of August 19, 2020 ]