Creating a form in SharePoint Online

I’m trying to create a custom form on a SharePoint site, but I’m having some trouble with it. Most tutorials I’ve found seem to assume the SharePoint software, but I’m running Linux and only using SharePoint Online. I’m a beginner when it comes to SharePoint, so any advice would be appreciated!

EDIT: Let me clarify based on @Yugo’s suggestions – I want to create a public facing form that any anonymous user can fill out and submit, similar to the contact forms you see all over the internet (such as the one on this site). It seems like I need to do something with a list, but embedding my created list as an App Part shows the list itself, not a form to fill out. I also saw mentions of Form Designer, but a third party solution seems unnecessarily convoluted.

Is there at all a way to create a public facing form on a SharePoint page without resorting to third party solutions?

Creating my first external facing API

Good morning. I am in need of creating my first External facing API which a client will use to gain access to specific company data. Can someone provide me a very good and simple tutorial or example on how to go about providing a token which can be used by the external partner to gain access; the methodology for providing that token and how I should construct it, and finally how I should decode it when they pass it? Thank you in advance.

Seeking a reliable way of creating trusted certificate files for OCSP

In my deployments I use OCSP must-staple flags on certificates, and ensure that my server is set to do verification and OCSP stapling. That’s all good, but I’m forever having problems creating the trusted certificate file correctly.

Given a typical certificate chain:

leaf -> intermediate -> root 

A typical fullchain.pem file generated by certbot will contain

leaf -> intermediate 

The trusted OCSP file should (I think) contain:

intermediate -> root 

However, the intermediate certificate is typically obtained from letsencrypt (or other CA) as part of their issuing process, and the root is usually from the local cert store (e.g. in /etc/ssl), so the trusted certificate file usually needs to be assembled manually, and this is where problems occur.

The name of the root cert is often not the same as what’s in the X509 info, and due to the myriad different kinds of certs issued by CAs, there are often many similarly-named root certs to choose from. This makes creating this file error-prone.

Another issue is that for no particular reason, openssl is picky about the order of certs in the file, and you can’t tell if it’s correct by looking at it.

Does anyone have a script that reliably takes a leaf (& possibly an intermediate) certificate, finds the correct root and bundles them together to create this file correctly?

Creating a “bubble” UI layout like used in the Apple Music app

I’ve been thinking about experimenting with a layout like the one used in the Apple Music app on iOS.

The interface is the “bubble” interface that is used to choose your preferences etc…

enter image description here

But I don’t really know where to even start with this. Is there a name for the general idea of creating these sort of semi-physics based layouts?

Would love to know what it is I need to search for in order to learn how these work.

I’d be writing it on iOS in Swift but looking more for the name of this sort of interface so I can learn the principals behind creating it.

Thanks

Creating Site Collection – Access Denied

I am remotelly installing SP 2013 via AutoSPInstaller and I am having trouble during script while its try to create site collection.

 -------------------------------------------------------------- --------------------------------------------------------------  - Creating web applications...  - Web app "Portal" already provisioned.  - Setting up managed paths for "http://portal.asd.local:80"   - Setting up explicit managed path "help" at "http://portal.asd.local:80" and HNSCs...  - Done setting up managed paths at "http://portal.asd.local:80" --------------------------------------------------------------  - Applying object cache accounts to "http://portal.asd.local:80"...  - Done applying object cache accounts to "http://portal.asd.local:80"  - Checking for Site Collection "http://portal.asd.local"...  - Creating Site Collection "http://portal.asd.local"... --------------------------------------------------------------  - Script halted!   Exception             : System.UnauthorizedAccessException:                         0x80070005Access denied.                            at Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessExceptio                         n ex)                            v Microsoft.SharePoint.Library.SPRequest.CreateSite(Guid gApplicationId, String bstrUrl, Int                         32 lZone, Guid gSiteId, Guid gDatabaseId, String bstrDatabaseServer, String bstrDatabaseName, S                         tring bstrDatabaseUsername, String bstrDatabasePassword, String bstrTitle, String bstrDescripti                         on, UInt32 nLCID, String bstrOwnerLogin, String bstrOwnerUserKey, String bstrOwnerName, String                         bstrOwnerEmail, String bstrSecondaryContactLogin, String bstrSecondaryContactUserKey, String bs                         trSecondaryContactName, String bstrSecondaryContactEmail, Boolean bADAccountMode, Boolean bHost                         HeaderIsSiteName, Int32 iDatabaseVersionMajor, Int32 iDatabaseVersionMinor, Int32 iDatabaseVers                         ionBuild, Int32 iDatabaseVersionRevision, String bstrSiteSchemaVersion)                            v Microsoft.SharePoint.Administration.SPSiteCollection.Add(SPContentDatabase database, SPSit                         eSubscription siteSubscription, String siteUrl, String title, String description, UInt32 nLCID,                          Int32 compatibilityLevel, String webTemplate, String ownerLogin, String ownerName, String owne                         rEmail, String secondaryContactLogin, String secondaryContactName, String secondaryContactEmail                         , String quotaTemplate, String sscRootWebUrl, Boolean useHostHeaderAsSiteName, Boolean override                         CompatibilityRestriction)                            v Microsoft.SharePoint.PowerShell.SPCmdletNewSite.CreateDataObject()                            v Microsoft.SharePoint.PowerShell.SPNewCmdletBase`1.InternalProcessRecord()                            v Microsoft.SharePoint.PowerShell.SPCmdlet.ProcessRecord() TargetObject          : Microsoft.SharePoint.PowerShell.SPCmdletNewSite CategoryInfo          : InvalidData: (Microsoft.Share...SPCmdletNewSite:SPCmdletNewSite) [New-SPSite], UnauthorizedAcce                         ssException FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletNewSite ErrorDetails          : InvocationInfo        : System.Management.Automation.InvocationInfo ScriptStackTrace      : at CreateWebApp, C:\Install\AutoSPInstaller\AutoSPInstaller\AutoSPInstallerFunctions.ps1: line                         2790                         at CreateWebApplications, C:\Install\AutoSPInstaller\AutoSPInstaller\AutoSPInstallerFunctions.p                         s1: line 2575                         at Setup-Farm, C:\Install\AutoSPInstaller\AutoSPInstaller\AutoSPInstallerMain.ps1: line 209                         at , C:\Install\AutoSPInstaller\AutoSPInstaller\AutoSPInstallerMain.ps1: line 408                         at , : line 1 PipelineIterationInfo : {} PSMessageDetails      :    ----------------------------------- | Automated SP2013 install script | | Started on: 11. 9. 2015 17:49:13 | | Aborted:    11. 9. 2015 17:50:48 | ----------------------------------- 

I have tried a lot of things

  1. Try to running SharePoint Product Configuration Wizard manually to see if it stabilizes my farm, then try run the script again
  2. Manually set user policy to SuperUser and SuperReader in SP Central Adminsitration to my site collection (as said link on line 2790 in AutoSPInstallerFunctions.ps1 – see Error msg)
  3. checked (System cryptography: FIPS)
  4. Added all avaible DB users all permission (just for control) not working
  5. Set the pool identity from SP_AppPool to Network Service + add SP_Farm into “Log on as a service” and “Log on as a batch” in Local Secuirty Policy
  6. Delete all database, users, web aplications, disconnect the farm via SP Product config wizard and try to run it all over again

None of these working

Is is possible that this problem is due to remote install? because i am getting out of relevant google page to search.

Thank you in advance

/////EDIT////// Source code from AutoSPinstaller that creating it ( @Waqas Sarwar MCSE )

 # =================================================================================== # Func: CreateWebApp # Desc: Create the web application # =================================================================================== Function CreateWebApp([System.Xml.XmlElement]$  webApp) {     Get-MajorVersionNumber $  xmlinput     # Look for a managed account that matches the web app type, e.g. "Portal" or "MySiteHost"     $  webAppPoolAccount = Get-SPManagedAccountXML $  xmlinput $  webApp.Type     # If no managed account is found matching the web app type, just use the Portal managed account     if (!$  webAppPoolAccount)     {         $  webAppPoolAccount = Get-SPManagedAccountXML $  xmlinput -CommonName "Portal"         if ([string]::IsNullOrEmpty($  webAppPoolAccount.username)) {throw " - `"Portal`" managed account not found! Check your XML."}     }     $  webAppName = $  webApp.name     $  appPool = $  webApp.applicationPool     $  dbPrefix = Get-DBPrefix $  xmlinput     $  database = $  dbPrefix+$  webApp.Database.Name     $  dbServer = $  webApp.Database.DBServer     # Check for an existing App Pool     $  existingWebApp = Get-SPWebApplication | Where-Object { ($  _.ApplicationPool).Name -eq $  appPool }     $  appPoolExists = ($  existingWebApp -ne $  null)     # If we haven't specified a DB Server then just use the default used by the Farm     If ([string]::IsNullOrEmpty($  dbServer))     {         $  dbServer = $  xmlinput.Configuration.Farm.Database.DBServer     }     $  url = $  webApp.url     $  port = $  webApp.port     $  useSSL = $  false     $  installedOfficeServerLanguages = (Get-Item "HKLM:\Software\Microsoft\Office Server$  env:spVer.0\InstalledLanguages").GetValueNames() | ? {$  _ -ne ""}     # Strip out any protocol value     If ($  url -like "https://*") {$  useSSL = $  true}     $  hostHeader = $  url -replace "http://","" -replace "https://",""     if (((Get-WmiObject Win32_OperatingSystem).Version -like "6.2*" -or (Get-WmiObject Win32_OperatingSystem).Version -like "6.3*") -and ($  env:spVer -eq "14"))     {         Write-Host -ForegroundColor White " - Skipping setting the web app directory path name (not currently working on Windows 2012 w/SP2010)..."         $  pathSwitch = @{}     }     else     {         # Set the directory path for the web app to something a bit more friendly         ImportWebAdministration         # Get the default root location for web apps         $  iisWebDir = (Get-ItemProperty "IIS:\Sites\Default Web Site\" -name physicalPath -ErrorAction SilentlyContinue) -replace ("%SystemDrive%","$  env:SystemDrive")         if (!([string]::IsNullOrEmpty($  iisWebDir)))         {             $  pathSwitch = @{Path = "$  iisWebDir\wss\VirtualDirectories$  webAppName-$  port"}         }         else {$  pathSwitch = @{}}     }     # Only set $  hostHeaderSwitch to blank if the UseHostHeader value exists has explicitly been set to false     if (!([string]::IsNullOrEmpty($  webApp.UseHostHeader)) -and $  webApp.UseHostHeader -eq $  false)     {         $  hostHeaderSwitch = @{}     }     else {$  hostHeaderSwitch = @{HostHeader = $  hostHeader}}     if (!([string]::IsNullOrEmpty($  webApp.useClaims)) -and $  webApp.useClaims -eq $  false)     {         # Create the web app using Classic mode authentication         $  authProviderSwitch = @{}     }     else # Configure new web app to use Claims-based authentication     {         If ($  ($  webApp.useBasicAuthentication) -eq $  true)         {             $  authProvider = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -UseBasicAuthentication         }         Else         {             $  authProvider = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication         }         $  authProviderSwitch = @{AuthenticationProvider = $  authProvider}         If ((Gwmi Win32_OperatingSystem).Version -like "6.0*") # If we are running Win2008 (non-R2), we may need the claims hotfix         {             [bool]$  claimsHotfixRequired = $  true             Write-Host -ForegroundColor Yellow " - Web Applications using Claims authentication require an update"             Write-Host -ForegroundColor Yellow " - Apply the http://go.microsoft.com/fwlink/?LinkID=184705 update after setup."         }     }     if ($  appPoolExists)     {         $  appPoolAccountSwitch = @{}     }     else     {         $  appPoolAccountSwitch = @{ApplicationPoolAccount = $  ($  webAppPoolAccount.username)}     }     $  getSPWebApplication = Get-SPWebApplication | Where-Object {$  _.DisplayName -eq $  webAppName}     If ($  getSPWebApplication -eq $  null)     {         Write-Host -ForegroundColor White " - Creating Web App `"$  webAppName`""         New-SPWebApplication -Name $  webAppName -ApplicationPool $  appPool -DatabaseServer $  dbServer -DatabaseName $  database -Url $  url -Port $  port -SecureSocketsLayer:$  useSSL @hostHeaderSwitch @appPoolAccountSwitch @authProviderSwitch @pathSwitch | Out-Null         If (-not $  ?) { Throw " - Failed to create web application" }     }     Else {Write-Host -ForegroundColor White " - Web app `"$  webAppName`" already provisioned."}     SetupManagedPaths $  webApp     If ($  useSSL)     {         $  SSLHostHeader = $  hostHeader         $  SSLPort = $  port         $  SSLSiteName = $  webAppName         if (((Get-WmiObject Win32_OperatingSystem).Version -like "6.2*" -or (Get-WmiObject Win32_OperatingSystem).Version -like "6.3*") -and ($  env:spVer -eq "14"))         {             Write-Host -ForegroundColor White " - Assigning certificate(s) in a separate PowerShell window..."             Start-Process -FilePath "$  PSHOME\powershell.exe" -Verb RunAs -ArgumentList "-Command `". $  env:dp0\AutoSPInstallerFunctions.ps1`; AssignCert $  SSLHostHeader $  SSLPort $  SSLSiteName; Start-Sleep 10`"" -Wait         }         else {AssignCert $  SSLHostHeader $  SSLPort $  SSLSiteName}     }      # If we are provisioning any Office Web Apps, Visio, Excel, Access or PerformancePoint services, we need to grant the generic app pool account access to the newly-created content database     # Per http://technet.microsoft.com/en-us/library/ff829837.aspx and http://autospinstaller.codeplex.com/workitem/16224 (thanks oceanfly!)     If ((ShouldIProvision $  xmlinput.Configuration.OfficeWebApps.ExcelService -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.OfficeWebApps.PowerPointService -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.OfficeWebApps.WordViewingService -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.EnterpriseServiceApps.VisioService -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.EnterpriseServiceApps.ExcelServices -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.EnterpriseServiceApps.AccessService -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.EnterpriseServiceApps.AccessServices -eq $  true) -or `         (ShouldIProvision $  xmlinput.Configuration.EnterpriseServiceApps.PerformancePointService -eq $  true))     {         $  spservice = Get-SPManagedAccountXML $  xmlinput -CommonName "spservice"         Write-Host -ForegroundColor White " - Granting $  ($  spservice.username) rights to `"$  webAppName`"..." -NoNewline         $  wa = Get-SPWebApplication | Where-Object {$  _.DisplayName -eq $  webAppName}         $  wa.GrantAccessToProcessIdentity("$  ($  spservice.username)")         Write-Host -ForegroundColor White "OK."     }     if ($  webApp.GrantCurrentUserFullControl -eq $  true)     {         $  currentUser = "$  env:USERDOMAIN$  env:USERNAME"         $  wa = Get-SPWebApplication | Where-Object {$  _.DisplayName -eq $  webAppName}         if ($  wa.UseClaimsAuthentication -eq $  true) {$  currentUser = 'i:0#.w|' + $  currentUser}         Set-WebAppUserPolicy $  wa $  currentUser "$  env:USERNAME" "Full Control"     }     WriteLine            ConfigureObjectCache $  webApp      if ($  webApp.SiteCollections.SelectSingleNode("SiteCollection")) # Only go through these steps if we actually have a site collection to create     {         ForEach ($  siteCollection in $  webApp.SiteCollections.SiteCollection)         {             $  dbPrefix = Get-DBPrefix $  xmlinput             $  getSPSiteCollection = $  null             $  siteCollectionName = $  siteCollection.Name             $  siteURL = $  siteCollection.siteURL             $  CompatibilityLevel = $  siteCollection.CompatibilityLevel             if (!([string]::IsNullOrEmpty($  CompatibilityLevel))) # Check the Compatibility Level if it's been specified             {                 $  CompatibilityLevelSwitch = @{CompatibilityLevel = $  CompatibilityLevel}             }             else {$  CompatibilityLevelSwitch = @{}}             if (!([string]::IsNullOrEmpty($  ($  siteCollection.CustomDatabase)))) # Check if we have specified a non-default content database for this site collection             {                 $  siteDatabase = $  dbPrefix+$  siteCollection.CustomDatabase             }             else # Just use the first, default content database for the web application             {                 $  siteDatabase = $  database             }             # If an OwnerAlias has been specified, make it the primary, and the currently logged-in account the secondary. Otherwise, make the app pool account for the web app the primary owner             if (!([string]::IsNullOrEmpty($  ($  siteCollection.Owner))))             {                 $  ownerAlias = $  siteCollection.Owner             }             else             {                 $  ownerAlias = $  webAppPoolAccount.username             }             $  LCID = $  siteCollection.LCID             $  siteCollectionLocale = $  siteCollection.Locale             $  siteCollectionTime24 = $  siteCollection.Time24             # If a template has been pre-specified, use it when creating the Portal site collection; otherwise, leave it blank so we can select one when the portal first loads             $  template = $  siteCollection.template             If (($  template -ne $  null) -and ($  template -ne ""))             {                 $  templateSwitch = @{Template = $  template}             }             else {$  templateSwitch = @{}}             if ($  siteCollection.HostNamedSiteCollection -eq $  true)             {                 $  hostHeaderWebAppSwitch = @{HostHeaderWebApplication = $  ($  webApp.url)+":"+$  ($  webApp.port)}             }             else {$  hostHeaderWebAppSwitch = @{}}             Write-Host -ForegroundColor White " - Checking for Site Collection `"$  siteURL`"..."             $  getSPSiteCollection = Get-SPSite -Limit ALL | Where-Object {$  _.Url -eq $  siteURL}             If (($  getSPSiteCollection -eq $  null) -and ($  siteURL -ne $  null))             {                 # Verify that the Language we're trying to create the site in is currently installed on the server                 $  culture = [System.Globalization.CultureInfo]::GetCultureInfo(([convert]::ToInt32($  LCID)))                 $  cultureDisplayName = $  culture.DisplayName                 If (!($  installedOfficeServerLanguages | Where-Object {$  _ -eq $  culture.Name}))                 {                     Write-Warning "You must install the `"$  culture ($  cultureDisplayName)`" Language Pack before you can create a site using LCID $  LCID"                 }                 Else                 {                     $  siteDatabaseExists = Get-SPContentDatabase -Identity $  siteDatabase -ErrorAction SilentlyContinue                     if (!$  siteDatabaseExists)                     {                         Write-Host -ForegroundColor White " - Creating new content database `"$  siteDatabase`"..."                         New-SPContentDatabase -Name $  siteDatabase -WebApplication (Get-SPWebApplication $  webApp.url) | Out-Null                     }                     Write-Host -ForegroundColor White " - Creating Site Collection `"$  siteURL`"..."                     $  site = New-SPSite -Url $  siteURL -OwnerAlias $  ownerAlias -SecondaryOwner $  env:USERDOMAIN$  env:USERNAME -ContentDatabase $  siteDatabase -Description $  siteCollectionName -Name $  siteCollectionName -Language $  LCID @templateSwitch @hostHeaderWebAppSwitch @CompatibilityLevelSwitch -ErrorAction Stop                      # JDM Not all Web Templates greate the default SharePoint Croups that are made by the UI                     # JDM These lines will insure that the the approproprate SharePoint Groups, Owners, Members, Visitors are created                     $  primaryUser = $  site.RootWeb.EnsureUser($  ownerAlias)                     $  secondaryUser = $  site.RootWeb.EnsureUser("$  env:USERDOMAIN$  env:USERNAME")                     $  title = $  site.RootWeb.title                     Write-Host -ForegroundColor White " - Ensuring default groups are created..."                     $  site.RootWeb.CreateDefaultAssociatedGroups($  primaryUser, $  secondaryUser, $  title)                      # Add the Portal Site Connection to the web app, unless of course the current web app *is* the portal                     # Inspired by http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=264                     $  portalWebApp = $  xmlinput.Configuration.WebApplications.WebApplication | Where {$  _.Type -eq "Portal"} | Select-Object -First 1                     $  portalSiteColl = $  portalWebApp.SiteCollections.SiteCollection | Select-Object -First 1                     If ($  site.URL -ne $  portalSiteColl.siteURL)                     {                         Write-Host -ForegroundColor White " - Setting the Portal Site Connection for `"$  siteCollectionName`"..."                         $  site.PortalName = $  portalSiteColl.Name                         $  site.PortalUrl = $  portalSiteColl.siteUrl                     }                     If ($  siteCollectionLocale)                     {                         Write-Host -ForegroundColor White " - Updating the locale for `"$  siteCollectionName`" to `"$  siteCollectionLocale`"..."                         $  site.RootWeb.Locale = [System.Globalization.CultureInfo]::CreateSpecificCulture($  siteCollectionLocale)                     }                     If ($  siteCollectionTime24)                     {                         Write-Host -ForegroundColor White " - Updating 24 hour time format for `"$  siteCollectionName`" to `"$  siteCollectionTime24`"..."                         $  site.RootWeb.RegionalSettings.Time24 = $  ([System.Convert]::ToBoolean($  siteCollectionTime24))                     }                     $  site.RootWeb.Update()                 }             }             Else {Write-Host -ForegroundColor White " - Skipping creation of site `"$  siteCollectionName`" - already provisioned."}             if ($  siteCollection.HostNamedSiteCollection -eq $  true)             {                 Add-LocalIntranetURL ($  siteURL)                 # Updated so that we don't add URLs to the local hosts file of a server that's not running the Foundation Web Application service                 if ($  xmlinput.Configuration.WebApplications.AddURLsToHOSTS -eq $  true -and !(($  xmlinput.Configuration.Farm.Services.SelectSingleNode("FoundationWebApplication")) -and !(ShouldIProvision $  xmlinput.Configuration.Farm.Services.FoundationWebApplication -eq $  true)))                 {                     # Add the hostname of this host header-based site collection to the local HOSTS so it's immediately resolvable locally                     # Strip out any protocol and/or port values                     $  hostname,$  null = $  siteURL -replace "http://","" -replace "https://","" -split ":"                     AddToHOSTS $  hostname                 }             }             WriteLine         }     }     else     {         Write-Host -ForegroundColor Yellow " - No site collections specified for $  ($  webapp.url) - skipping."     } }  # =================================================================================== 

Creating a partition with sfdisk

I am working on a lab which needs me to format an SD card with two partitions. I have formatted the SD card, discovered it as sde1 and then i ran sudo umount /dev/sde1 before running:

sudo sfdisk /dev/sde1 << EOF > 1,,0xE,* > EOF 

I get the following error:

Checking that no-one is using this disk right now ... FAILED  This disk is currently in use - repartitioning is probably a bad idea. Umount all file systems, and swapoff all swap partitions on this disk. Use the --no-reread flag to suppress this check.  sfdisk: Use the --force flag to overrule all checks. 

I have no idea where to go from here. I am new to this as well. I had read that I needed to disable automount on Ubuntu and used gsettings set org.gnome.desktop.media-handling automount false which had not effect. I would still get the above error. Please help.

How to resolve error creating universal data connection file (.udcx)?

Trying to follow along to create a Data Connection Library but run into the following error:

The specified location does not exist or could not be opened. Choose a data connection library on a server running Microsoft SharePoint Server and specify a valid filename.

I was able to create the SharePoint Data Connection Library. Then I move to the To create a new data connection file in InfoPath section. I get to step 7 and encounter the error before I can finish.

I have my dataconnectionlibrary Data Connection that I just created highlighted.

enter image description here

I click Convert to Connection File button. Then as instructed, I put the address of the SharePoint Data Connection Library in followed by a chosen filename then the .udcx extension.

enter image description here

I hit OK, and at first, it looks like it’s going to work, like everything’s normal:

enter image description here.

Nope:

enter image description here.

This happens no matter which Connection link type I choose (Relative to the site collection OR Centrally managed connection library). This happens no matter where I specify to put the file; I can Browse to my own Documents folder and it still gives me this error.

Looking for any kind of help on this one. Trying to create the Data Connection Library due to 5566 error trying to auto populate user info with GetUserProfileByName using SOAP in InfoPath form. Is there a workaround, a different way to create the .udcx file? This is so frustrating, running into error after error just trying to auto-populate a Person Picker control.

Ubuntu 18.04 Network Manager Not Creating New Connection for USB Ethernet device

The issue is that when I add a usb ethernet device, network manager doesn’t create a new connection for the added device. It correctly manages it but it is stuck in the disconnected state until you manually add a connection with network manager. This is not how a regular install behaves which has network manager creating connections in memory and attaching it to the device you just plugged in.

I installed ubuntu using the alternative installer and use a preseed file to set up the machine. In the preseed file we install all the packages for the ubuntu desktop and a few others. This may be related to the issues. Possibly relevant sections of the preseed file, everything else is related to partitioning and encryption.

d-i netcfg/choose_interface select auto tasksel tasksel/first multiselect ubuntu-desktop d-i pkgsel/include string ssh build-essential python-minimal ubuntu-desktop vim  

The reason for installation this way is beyond this question. It can be changed but this bug effects devices that have already been setup this way and fixing them can’t be “reinstall”.

An example of nmcli output when there is a ethernet connection on the motherboard and two usb ethernet connections.

eno1: connected to netplan-eno1  enx8cae4cfea138: connected to Wired connection 1  enx00e08f005933: disconnected         "Realtek USB 10/100/1000 LAN"         1 connection available         ethernet (r8152), 00:E0:8F:00:59:33, hw, mtu 1500  

It seems somewhere during the install, network manager creates ‘Wired Connection 1’ in /etc/NetworkManager/system-connections/ which it then applies it to any connected usb device. eno1 seems to be using something that netplan generates. I’m not sure where I should be looking for all of this, the mix of netplan, networkmanager and systemd-networkd that this Frankenstein machine results in is a bit confusing but here are some relevant config files. These are untouched from a fresh install.

/etc/NetworkManager/NetworkManager.conf

[main] plugins=ifupdown,keyfile  [ifupdown] managed=false  [device] wifi.scan-rand-mac-address=no 

/etc/NetworkManager/system-connections/Wired connection 1

[connection] id=Wired connection 1 uuid=5da83520-ee6d-4e0a-a21d-27d0c9eb5b77 type=802-3-ethernet  [802-3-ethernet]  [ipv4] method=auto  [ipv6] method=auto ip6-privacy=2 

/etc/netplan/01-netcfg.yml

# This file describes the network interfaces available on your system # For more information, see netplan(5) network:   version: 2   renderer: networkd   ethernets:     eno1:       dhcp4: yes 

/etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system network:   version: 2   renderer: NetworkManager 

/var/run/NetworkManager/system-connections/netplan-eno1

[connection] id=netplan-eno1 type=ethernet interface-name=eno1  [ethernet] wake-on-lan=0  [ipv4] method=auto  [ipv6] method=ignore 

/etc/network/interface

source-directory /etc/network/interfaces.d 

and interfaced.d is an empty directory.

NetworkManager is an enabled service and systemd-networkd is not enable.

Journalctl from network manager when I plug the usb ethernet into the device when it fails to assign it a connection.

Aug 09 15:06:25 <computer> NetworkManager[1011]: <info>  [1565388385.0741] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/8) Aug 09 15:06:25 <computer> NetworkManager[1011]: <info>  [1565388385.1246] devices added (path: /sys/devices/pci0000:00/0000:00:14.0/usb2/2-8/2-8.1/2-8.1:1.0/net/enx8cae4ce9dc04, iface: enx8cae4ce9dc04) Aug 09 15:06:25 <computer> NetworkManager[1011]: <info>  [1565388385.1246] device added (path: /sys/devices/pci0000:00/0000:00:14.0/usb2/2-8/2-8.1/2-8.1:1.0/net/enx8cae4ce9dc04, iface: enx8cae4ce9dc04): no ifupdown configuration found. Aug 09 15:06:25 <computer> NetworkManager[1011]: <info>  [1565388385.1247] device (enx8cae4ce9dc04): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external') Aug 09 15:06:28 <computer> NetworkManager[1011]: <info>  [1565388388.4869] device (enx8cae4ce9dc04): carrier: link connected Aug 09 15:06:28 <computer> NetworkManager[1011]: <info>  [1565388388.4897] device (enx8cae4ce9dc04): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')  

Journalctl from network manager when I plug the usb device into my own destkop.

Aug 09 15:04:25 <computer> NetworkManager[2382]: <info>  [1565388265.0379] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/11) Aug 09 15:04:25 <computer> NetworkManager[2382]: <info>  [1565388265.0961] devices added (path: /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/net/enx8cae4ce9dc04, iface: enx8cae4ce9dc04) Aug 09 15:04:25 <computer> NetworkManager[2382]: <info>  [1565388265.0961] device added (path: /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/net/enx8cae4ce9dc04, iface: enx8cae4ce9dc04): no ifupdown configuration found. Aug 09 15:04:25 <computer> NetworkManager[2382]: <info>  [1565388265.0964] device (enx8cae4ce9dc04): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external') Aug 09 15:04:25 <computer> NetworkManager[2382]: <info>  [1565388265.4268] keyfile: add connection in-memory (15600b6f-63ad-37ae-9f6c-2f2e28f05489,"Wired connection 4") Aug 09 15:04:25 <computer> NetworkManager[2382]: <info>  [1565388265.4272] settings: (enx8cae4ce9dc04): created default wired connection 'Wired connection 4' Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5839] device (enx8cae4ce9dc04): carrier: link connected Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5877] device (enx8cae4ce9dc04): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed') Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5899] policy: auto-activating connection 'Wired connection 4' Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5926] device (enx8cae4ce9dc04): Activation: starting connection 'Wired connection 4' (15600b6f-63ad-37ae-9f6c-2f2e28f05489) Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5935] device (enx8cae4ce9dc04): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed') Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5949] device (enx8cae4ce9dc04): state change: prepare -> config (reason 'none', sys-iface-state: 'managed') Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5961] device (enx8cae4ce9dc04): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed') Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.5972] dhcp4 (enx8cae4ce9dc04): activation: beginning transaction (timeout in 45 seconds) Aug 09 15:04:28 <computer> NetworkManager[2382]: <info>  [1565388268.6012] dhcp4 (enx8cae4ce9dc04): dhclient started with pid 25848 Aug 09 15:04:28 <computer> dhclient[25848]: DHCPREQUEST of 10.15.1.104 on enx8cae4ce9dc04 to 255.255.255.255 port 67 (xid=0x46cb0eef)  

It’s the “Creating connection in memory” line that is missing from the device logs. Is there some setting I’m missing to set for network manager that enables it to do that?